Страница 1 из 1

Отладка кода

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

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

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

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

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

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

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

Напишите, какими способами пользуйтесь вы? Есть ещё много разных вариантов. Например всплывающие окна, или сообщения в правом нижнем углу браузера. Уверен, всем будет интересно узнать и попробовать.

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

Добавлено: Пт май 20, 2016 4:30 pm
savenko_egor
Ну как вариант, можно использовать JavaScript-овскую: "console.log()". И смотреть в удобной консоли браузера.

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

Добавлено: Пт май 20, 2016 6:08 pm
Bagir
Да, и вправду я никогда не пользовался таким вариантом.

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

<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;
    } 
Отлично работает. Но вероятно таким образом можно отладить только код, который выполняется на этой странице. К примеру их методов у меня в консоль ничего не попадает. Только из сценариев.