Pull to refresh

DumPHPer — Advanced PHP var dumper или замена var_dump

Reading time 2 min
Views 6.8K
Наверно, всем когда-либо приходилось пользоваться встроенными функциями var_dump или print_r. Пользоваться ими крайне неудобно, для чтения дампа приходилось либо обрамлять вызовы этих функций тегом <pre> либо смотреть исходный код страницы. Более того print_r не даёт информации о типе переменных, а var_dump еще не так давно зависал при выводе рекурсивных массивов. Поэтому, я решил написать свой дампер, который бы повторял всё то, что умеют вышеописанные функции, а также добавлял дополнительную информацию об объектах и их свойствах и делал дамп удобным для чтения/изучения.


Недавно подумал, а почему бы не поделиться поделиться кодом с общественностью. Человек я ленивый, поэтому долго не брался переписать код (старый код был «вонючим»), да и чтобы статью написать надо иметь время и желание. Времени для создания странички проекта на своем сайте, равно как и на создание самого сайта я еще не нашел, всё из-за той же Лени.

Что уже работает

— собственно дамп
— цветовая подсветка типов
— сворачивание/разворачивание массивов/объектов
— определение рекурсии массивов/объектов
— внутри одного вызова дампится только первое упоминание конкретного инстанса объекта, при повторном нахождении инстанса ставится ссылка на его первое упоминание, которая при нажатии его находит и раскрывает
— состоит только из себя

Что в планах

— ввести просчет инстансов для массивов (с функционалом аналогичным для объектов), с возможностью отключения данной ресурсоемкой операции.

Известные баги

— в PHP 5.2 выводятся копии непубличных свойств объекта (пока нет идей как это исправить, ибо достаются они посредством преобразования в массив).

Краткая демонстрация доступна по адресу widowmaker.kiev.ua/dumper.html

Скачать исходник с гуглокода



Вместо PS

0. Нужна такая штука?
1. Какую лицензию посоветуете?
2. Как лучше зарефакторить код (код мне не нравится), но так чтобы не было сотни объектов?
3. Перемещать в блог PHP?
4. Идеи как исправить баг, пожелания и критика приветствуются.

Update
Я так понял минусуют из-за того, что не описано «зачем?». Отвечу: затем, что не всегда есть возможность поставить модуль для дебага (например нету ssh), а этот скриптик написан на php, и его можно просто залить по фтп.
Tags:
Hubs:
+10
Comments 35
Comments Comments 35

Articles