06 марта 2006

Крутая дампилка dBug

Нашёл недавно хорошую дампилку для РНР. Сделана она неплохо, по аналогии с встроенной функцией дампа из ColdFusion.
Что умеет:

  • выводит разные дампы для разных типов данных: скалярные переменные (строки, числа), объекты, табличку с результатами запроса к БД по передаче переменной с ресурсом, XML. Для каждого типа настроен свой CSS, так что весьма наглядно;
  • дампы по идее не имеют ограничений по вложенности, т.е. свободно дампятся массивы структур, вложенные массивы, итд;
  • если весь дамп либо какая-то его ветка занимают слишком много места, то их можно свернуть/развернуть щелчком мыши (JavaScript разумеется).

Минусы:

  • я использую каркас Fusebox 4, и там все такие "плагины" подключаются в самом начала работы приолжения. Так вот этот самый дампер херит мой валидный хтмл тем, что сразу выводит свои функции и цсс-классы ещё до заветного <html>. Автор упоминает это в комментах, и это чинится разрезанием класса на 3 части: JavaScript, CSS и PHP по отдельности (это не трудно, всё разграничено);
  • плохо дампит строки: если дампить строку, в которой есть хтмл-код, то он будет проинтерпретирован, а также пропадают переносы строк. Поэтому я сделал небольшую правку, после которой этот плагин начинает замечательно работать со скалярными типами, просто любо-дорого теперь работать. Правки такие:
  1. В РНР-классе в функции checkType() находится единственный switch(), вот в дефолт-часть оного надо вставить это
    $this->makeTableHeader("scalar", gettype($var));
    echo "<tr>\n<td align=\"left\">";
    echo (empty($var)) ? "[empty string]" : nl2br(htmlspecialchars($var));
    echo "</td>\n</tr>\n</table>";
    break;
  2. В CSS надо вставить такие объявления (тут можно настроить свою цветовую гамму):
    /* scalar */
    table.dBug_scalar { background-color:#a0a; }
    table.dBug_scalar td { background-color:#FFFFFF; }
    table.dBug_scalar td.dBug_scalarHeader { background-color:#dfd; }
    table.dBug_scalar td.dBug_scalarKey { background-color:#FCF; }

0 комментов:

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