Krumo versus print_r() & var_dump()

Krumo

Заголовок у заметки, конечно, не очень получился. Какое противостояние может быть между боксером-тяжеловесом и забиякой-пятикласником? С появлением Krumo обе вышеуказанные функции PHP можно смело отправлять на свалку истории.

Krumo представляет из себя парсер переменных и конфигурационной информации PHP, реализующий хорошо читаемый древовидный вывод сложных переменных и объектов этого языка. Все нескалярные значения в выводе, а также большие тексты, свернуты. Их полный просмотр осуществляется кликом мыши по имени переменной, что позволяет быстро и удобно просмотреть самые сложные их значения. Оформлен парсер в виде одной функции krumo() и одного одноимённого класса.

Сайт проекта: http://krumo.kaloyan.info/
Там же вы можете посмотреть примеры его работы

Проект также размещен на http://krumo.sourceforge.net
Скачать требуемые файлы Krumo можно оттуда же http://sourceforge.net/project/showfiles.php?group_id=194198
Документация к исходному коду: http://krumo.kaloyan.info/docs/
Разработчик: Калоян Цветков (Kaloyan K. Tsvetkov).
Лицензия на использование продукта: GNU Lesser General Public License Version 2.1

Скачанный архив распакуйте в папку вашего php-проекта и подключите к скриптам следующим кодом:

require_once "class.krumo.php";

Если ваш компьютер постоянно используется для разработки веб-проектов, то лучшим способом будет не запихивание krumo в каждый проект, а размещение его в папке, указанной в переменной PHP INCLUDE_PATH. В этом случае нужный файл будет сразу найден в любом скрипте PHP.

Использовать Krumo проще простого:

krumo($var);

И в этом месте вы получите готовый HTML-код значения переменной $var.

Допустимо указание нескольких переменных при вызове функции

krumo($var1, $var2, $var3,...);

В случае, если результат работы функции вам нужен в другом месте, придется воспользоваться контролем вывода:
ob_start();
krumo($var);
$out = ob_get_contents();
ob_end_clean();
...
print $out;

Кроме использования функции krumo(), доступны методы класса krumo.

// Вывод переменной $var, синоним krumo()
  krumo::dump($var);

// Вывод функции debug_backtrace()
// Функция выводит все вложенные вызовы функций
// и методов классов скрипта до этого места
  krumo::backtrace();

// Вывод всех декларированных классов
  krumo::classes();

// Вывод всех декларированных интерфейсов
  krumo::interfaces();

// Вывод всех подключенных к скрипту файлов
  krumo::includes();

// Вывод всех функций, как определенных пользователем, так и внутренних
  krumo::functions();

// Вывод всех объявленных констант
  krumo::defines();

// Вывод всех загруженных расширений PHP
  krumo::extensions();

// Вывод всех заголовков для данного HTTP-запроса
  krumo::headers();

// Вывод всех параметров из файла конфигурации PHP - php.ini
  krumo::phpini();

// Вывод всех параметров конфигурации PHP
  krumo::conf();

// Вывод всех директорий из переменной INCLUDE_PATH
  krumo::path();

// Вывод всех параметров конфигурации из файла $ini_file
  krumo::ini($ini_file);

// Вывод содержимого суперглобальных массивов PHP-скрипта
//$_SERVER, $_ENV, $_COOKIE, $_SESSION, $_REQUEST, $_GET, $_POST
  krumo::server();
  krumo::env();
  krumo::cookie();
  krumo::session();
  krumo::request();
  krumo::get();
  krumo::post();

Имеются также две функции для управления самим классом krumo

// Запретить вывод отладочных сообщений всего что ниже
  krumo::disable();
// Этот вывод показан не будет
  krumo::includes();

// Разрешить отладочный вывод
  krumo::enable();
// Этот вывод будет показан
  krumo::classes();

Думаю вышеописанного функционала достаточно для того, чтобы отыскать практически любую трудноуловимую ошибку.

В качестве дополнительной библиотеки krumo входит в состав некоторых популярных систем управления сайтами. В Drupal он входит в состав многофункционального модуля devel (http://drupal.org/project/devel/). А для Wordpress доступна оболочка над krumo - модуль wp-debug (http://www.siolon.com/blog/wp-debug/).