Blog. Just Blog

Перехват вывода функции var_dump()

Версия для печати Добавить в Избранное Отправить на E-Mail | Категория: Web-мастеру и не только | Автор: ManHunter
Перехват вывода функции var_dump()
Перехват вывода функции var_dump()

Функция PHP var_dump() отображает структурированную информацию о переданных ей параметрах и поэтому очень часто используется для отладки web-приложений. В отличие от сходной функции print_r() она дополнительно выводит типы данных, что в некоторых случаях бывает крайне полезным. Но в то же время функция print_r() позволяет возвращать свой выхлоп в виде строки, тогда как var_dump() без вариантов просто выводит результат. Давайте доработаем эту досадную недоработку.

Штатные средства PHP позволяют буферизировать вывод. Это означает, что вывод из скрипта не отправляется, например, в браузер, а вместо этого сохраняется во внутреннем буфере. Для работы с буферизацией существует целый набор функций контроля вывода. Решение первоначальной задачи сводится к следующему. С помощью функции ob_start() включаем буферизацию, сохраняем в буфер результат работы var_dump(), получаем его содержимое через функцию ob_get_contents() и затем отключаем буферизацию функцией ob_end_clean(). Последние два действия можно объединить, воспользовавшись функцией ob_get_clean(). Большой плюс такого метода в том, что буферизация вывода допускает вложенность и, если в коде ранее уже использовалась функция ob_start(), то последующий вызов буферизации с дальнейшей очисткой на первоначальный результат не повлияет.
  1. function var_dump_ex(...$vars) {
  2.     ob_start();
  3.     var_dump($vars);
  4.     return ob_get_clean();
  5. }
Получается вот такая компактная функция. Конструкция "...$vars" позволяет передавать произвольное количество параметров, как это сделано в оригинальной функции var_dump().

Поделиться ссылкой ВКонтакте
Просмотров: 196 | Комментариев: 0

Комментарии

Отзывы посетителей сайта о статье
Комментариeв нет

Добавить комментарий

Заполните форму для добавления комментария
Имя*:
Текст комментария (не более 2000 символов)*:

*Все поля обязательны для заполнения.
Комментарии, содержащие рекламу, ненормативную лексику, оскорбления и т.п., а также флуд и сообщения не по теме, будут удаляться. Нарушителям может быть заблокирован доступ к сайту.
Наверх
Powered by PCL's Speckled Band Engine 0.2 RC3
© ManHunter / PCL, 2008-2025
При использовании материалов ссылка на сайт обязательна
Время генерации: 0.07 сек. / MySQL: 2 (0.0031 сек.) / Память: 4.5 Mb
Наверх