Отладка PHP с FirePHP в Firebug
Я часто ругаюсь на print_r() и чуть более продвинутый pr() потому что выводимая информация перемешивается с тем, что должен видеть пользователь. Также раздражает просмотр объектов с огромными массивами информации. Мне не очень нравится Javascript с его дурацким синтаксисом, но, наверное, единственное, что меня в нём греет - это Firebug, которые делает отладку не столь ужасной. Приятно, когда можно сделать console.log(everything, you, want); и потом просматривать информацию в нормальном раскрывающемся дереве, а не в огромной простыне.
Для этого я даже когда-то написал JsDebugHelper, но что-то меня в нём смущало (наверное, eval
) и в итоге я им пользовался всего пару раз. Сегодня я нашёл более удобный способ скрестить Firebug с PHP - FirePHP.
FirePHP состоит из 2 частей - Extension к Firefox и PHP-класс FirePHP. Скачайте их с сайта FirePHP - firephp.org. Достаньте из FirePHPLibrary-FirePHPCore-x.x.x.tar.gz в папке \FirePHPCore\lib\FirePHPCore\ файл FirePHP.class.php и разархивируйте его в папку vendors вашего проекта на CakePHP.
Добавьте в config/bootstrap.php
-
function fb() {
-
if (Configure::read('debug')>=1) {
-
$instance = FirePHP::getInstance(true);
-
}
-
}
Теперь вы можете писать
-
fb('Hello World'); // Defaults to FirePHP::LOG
-
-
fb('Info message' ,FirePHP::INFO);
-
fb('Warn message' ,FirePHP::WARN);
-
fb('Error message',FirePHP::ERROR);
-
-
-
fb(
-
'key1'=>'val1',
-
'key2'=>array(
-
'v3'
-
)
-
),
-
'TestArray',
-
FirePHP::LOG
-
);
-
-
function test($Arg1) {
-
throw new Exception('Test Exception');
-
}
-
try {
-
} catch(Exception $e) {
-
fb($e);
-
}
-
-
fb(
-
'2 SQL queries took 0.06 seconds',
-
)
-
),
-
FirePHP::TABLE
-
);
И получите такую красивую картинку

Очень важная вкусность - всё передаётся не в response text, а в headers. Плюс в том, что можно отлаживать AJAX-запросы и изображения, не мусорится вывод. Недостаток - все fb() должны вызываться до того как что-то будет выведено на экран. Но недостаток не так критичен, ведь тру-программисты не выводят текст в моделях и контроллерах :). В крайнем случае, можно использовать кеширование вывода (ob_start,...).
Эх, если бы все ошибки CakePHP можно было бы автоматически выводить в Firebug в 2 строки: dump и trace (как Exception в примере). Было бы очень удобно.
Спасибо за ссылочку. Кстати, Xdebug и его замена var_dump() мне нравятся больше, чем pr()
Да Firebug + FirePHP просто мечта веб-разработчика, времени экономит очень много
Сорри за флуд, но нигде не могу обнаружить ваши контакты, а пару вопросов от чайника по Cake задать хочеться... Если Вы не против, как с Вами можно связаться? Спасибо!
Если по-русски, то вопросы лучше задавать в http://cake-php.ru/forum/.
По-английски - в CakePHP Google Group.
Я не очень люблю давать ответы на вопросы
Ок, спасибо большое!
Всегда пользовался var_dump() и print_r().
Но данная статья позволила перейти на новый уровень знаний.
Вы расскажите пожалуйста, как с этим firephp работать вообщее!
Есть файл php. Мне нужно его редактировать + одновременно видеть визуальные изменения. С Html страницами в firebug все понятно, а с php... Как его открыть firephp? Если открываю в firefox - мне предлагается его либо сохранить, либо в другой программе открыть!
Как подключить FirePHPLibrary, которую скачал? Инструкцию на офф. сайте так и не могу перевести.
ps: спрашиваю, потому что погуглив, узнал о firephp, а как установить и работать - засекречено!
Вообще-то редактирование bootstrap.php -- лишнее.
Можно, конечно, и в него добавить строку App::import('Vendor'....), но можно это сделать и в любом другом месте проекта, а после этого вызывать FirePHP::fb(...)
Есть так же framework specific library на firephp.org
[...] Отладка PHP с FirePHP в Firebug [...]