Отладка PHP средствами Firebug

July 4, 2008 Firebug FirePHP PHP

FirePHPОтладка PHP-скриптов определенно недостаточно освещена в интернете. Потому многие, очень многие довольствуются print_r-ками. Очевидный недостаток такого способа – нельзя отладить AJAX, SOAP-сервисы, генераторы картинок и вообще скрипты, не отдающие непосредственно HTML-документов.

Javascript-разработчики используют для отладки Firebug. Как я им всегда завидовал. Лепота – выделенная консоль, net-монитор, отладчик, и все это в любимом браузере.

Так вот, нашел такое расширение Firebug – FirePHP. Оно позволяет выводить информацию в консоль Firebug непосредственно из PHP. Делается это довольно простым вызовом:

<?php
  require('FirePHP.class.php');

  $firephp = FirePHP::getInstance(true);

  $firephp -> fb("hello world! i'm warning you!",FirePHP::WARN);
?>

Кроме того в Firebug можно передавать произвольные структуры данных и исключения. В последнем случае получим не только сам объект исключения, но и содержимое стека. Возможностей масса, почитайте документацию.

Преимущество такой отладки в том, что данные передаются не в теле страницы, а в заголовках. Это значит, что во-первых, страница не засирается всяческими var_dump-ами, а во вторых, можно без проблем отлаживать AJAX-вызовы.

Для использования FirePHP нужно: подключить к проекту один файл и включить буферизацию вывода. Всего-то.

Насчет буферизации: на самом деле FirePHP хочет, чтобы до него никто ничего не писал в поток вывода. Логично, ведь он отправляет заголовки. Поскольку, вероятно, вы и так используете буферизацию, чтобы отправлять свои собственные заголовки, то это не проблема. Я имею ввиду, не обязательно использовать именно ob_start(), как в руководстве.

Не советую рассовывать вызовы fb() прямо в код. Подумайте, что будет с ними на продакшн-сервере. Правильнее внедрить FirePHP в систему отладки – например, уже есть расширения для Zend Framework и Symfony.

И я в свой отладчик интегрировал. Улет.

Buy Me a Coffee at ko-fi.com