Отладка кода

Использование системы в различных ситуациях, вопросы программирования сценариев.

Модератор: immortal

Ответить
Аватара пользователя
Bagir
Сообщения: 1615
Зарегистрирован: Вт сен 17, 2013 6:46 pm
Откуда: Ярославская область город Углич
Благодарил (а): 212 раз
Поблагодарили: 375 раз

Отладка кода

Сообщение Bagir » Пт май 20, 2016 1:07 pm

Поделитесь хитростями, которые вы используйте при отладке своего php кода. Очень часто нужно видеть, сработало наше условие или нет. А так же посмотреть значение некоторых переменных.

В консоли или скрипте можно использовать echo. например мы можем написать

Код: Выделить всё

$obj=getObject('hs_livingroom'); echo($obj->id);
и в ответе будет, скажем, 189. Это id моего объекта hs_livingroom.

В коде методов можно использовать просто say($myVar); и тогда значение переменной $myVar будет озвучено и написано в чате. Вариант в целом очень удобный но если дома ещё кто то есть, а отладки много, то можно слегка умучать своих домашних. Конечно всё решаемо, и можно вывести на отдельный канал звуковой карты или вовсе понизить приоритет, чтобы сообщения только писались в чате. Но я всё же думаю, что общий чат не место для отладочных сообщений.

Можно использовать функцию DebMes($myVar) чтобы писать свои сообщения в общий лог. Не всегда удобно, но во многих случаях очень полезно.

Можно даже написать свою функцию и сливать отладку куда захочется.

Напишите, какими способами пользуйтесь вы? Есть ещё много разных вариантов. Например всплывающие окна, или сообщения в правом нижнем углу браузера. Уверен, всем будет интересно узнать и попробовать.
За это сообщение автора Bagir поблагодарили (всего 2):
ILGAS (Пт май 20, 2016 4:04 pm) • lanket (Пт май 20, 2016 5:49 pm)
Рейтинг: 2.33%
Windows 10, HTTP, MegaD, Z-Wave, 1-Wire, CONNECT
Аватара пользователя
savenko_egor
Сообщения: 705
Зарегистрирован: Вс авг 03, 2014 8:17 pm
Откуда: Украина, Запорожье
Благодарил (а): 108 раз
Поблагодарили: 147 раз
Контактная информация:

Re: Отладка кода

Сообщение savenko_egor » Пт май 20, 2016 4:30 pm

Ну как вариант, можно использовать JavaScript-овскую: "console.log()". И смотреть в удобной консоли браузера.
За это сообщение автора savenko_egor поблагодарили (всего 2):
lanket (Пт май 20, 2016 5:49 pm) • Bagir (Пт май 20, 2016 6:09 pm)
Рейтинг: 2.33%
Аватара пользователя
Bagir
Сообщения: 1615
Зарегистрирован: Вт сен 17, 2013 6:46 pm
Откуда: Ярославская область город Углич
Благодарил (а): 212 раз
Поблагодарили: 375 раз

Re: Отладка кода

Сообщение Bagir » Пт май 20, 2016 6:08 pm

Да, и вправду я никогда не пользовался таким вариантом.

Код: Выделить всё

<script>console.log( 'My Debug' );</script>;
Ну раз уж так, то можно добавить свою функцию:

Код: Выделить всё

     /**
     * Simple helper to debug to the console
     * 
     * @param  Array, String $data
     * @return String
     */
    function debug_to_console( $data ) {

        if ( is_array( $data ) )
            $output = "<script>console.log( 'Debug Objects: " . implode( ',', $data) . "' );</script>";
        else
            $output = "<script>console.log( 'Debug Objects: " . $data . "' );</script>";

        echo $output;
    } 
Отлично работает. Но вероятно таким образом можно отладить только код, который выполняется на этой странице. К примеру их методов у меня в консоль ничего не попадает. Только из сценариев.
За это сообщение автора Bagir поблагодарил:
savenko_egor (Пт май 20, 2016 6:29 pm)
Рейтинг: 1.16%
Windows 10, HTTP, MegaD, Z-Wave, 1-Wire, CONNECT
Ответить