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/).

Отправить комментарий

Содержание этого поля является приватным и не предназначено к показу.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Доступны HTML теги: <a> <em> <strong> <cite> <code> <s> <u> <ul> <ol> <li> <dl> <dt> <dd>
  • Строки и параграфы переносятся автоматически.
  • You can enable syntax highlighting of source code with the following tags: <code>, <blockcode>. Beside the tag style "<foo>" it is also possible to use "[foo]".
  • Images can be added to this post.

Подробнее о форматировании

CAPTCHA
Защита от спама: ответьте на вопрос.
Image CAPTCHA
Введите символы с картинки. Только заглавные буквы английского алфавита.