Pull to refresh

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

Reading time2 min
Views25K
FirePHP

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

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

Так вот, нашел такое расширение Firebug — FirePHP. Оно позволяет выводить информацию в консоль Firebug непосредственно из 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.

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

crossposted
Tags:
Hubs:
Total votes 84: ↑76 and ↓8+68
Comments69

Articles