1. Вы находитесь в архивной версии форума xaker.name. Здесь собраны темы с 2007 по 2012 год, большинство инструкций и мануалов уже неактуальны.
    Скрыть объявление

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

Тема в разделе "PHP, Perl, web-программирование", создана пользователем Koller, 29 июл 2008.

  1. Koller

    Koller Исчез... Глобальный модератор

    Регистрация:
    3 ноя 2006
    Сообщения:
    401
    Симпатии:
    234
    Баллы:
    0

    Отладка 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.

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

    lesowik Новичок

    Регистрация:
    25 май 2011
    Сообщения:
    1
    Симпатии:
    0
    Баллы:
    0
    Если у пользователя не стоит фаербаг, то для него будут отправляться ненужные заголовки? Или для продакшн придется везде из кода удалять fb()? Объясните, пожалуйста.
     

Поделиться этой страницей