Дампинг

Каждый отладчик — хороший друг функции var_dump, которая подробно выводит содержимое переменной. К сожалению, в среде HTML вывод теряет форматирование и сливается в одну строку, не говоря уже о санитизации HTML-кода. На практике необходимо заменить var_dump более удобной функцией. Этой функцией является dump().

$arr = [10, 20.2, true, null, 'hello'];

dump($arr);
// или Debugger::dump($arr);

сгенерирует вывод:

Вы можете изменить светлую тему по умолчанию на темную:

Debugger::$dumpTheme = 'dark';

Далее мы можем изменить глубину вложенности с помощью Debugger::$maxDepth и длину отображаемых меток с помощью Debugger::$maxLength. Меньшие значения, естественно, ускорят Tracy.

Debugger::$maxDepth = 2; // default: 3
Debugger::$maxLength = 50; // default: 150

Функция dump() умеет выводить и другую полезную информацию. Константа Tracy\Dumper::LOCATION_SOURCE добавляет подсказку (tooltip) с путем к месту, где была вызвана функция. Tracy\Dumper::LOCATION_LINK предоставляет нам ссылку на это место. Tracy\Dumper::LOCATION_CLASS для каждого дампа объекта выводит подсказку (tooltip) с путем к файлу, в котором определен его класс. Константы устанавливаются в переменную Debugger::$showLocation еще до вызова dump(). Если мы хотим установить несколько значений одновременно, мы соединяем их с помощью оператора |.

Debugger::$showLocation = Tracy\Dumper::LOCATION_SOURCE; // Устанавливает только вывод о месте вызова функции
Debugger::$showLocation = Tracy\Dumper::LOCATION_CLASS | Tracy\Dumper::LOCATION_LINK; // Устанавливает одновременно вывод ссылки и путь к классу
Debugger::$showLocation = false; // Отключает вывод дополнительной информации
Debugger::$showLocation = true; // Включает вывод всей дополнительной информации

Практической альтернативой dump() являются dumpe() (dump & exit) и bdump(). Последний позволяет нам вывести значение переменной в панели Tracy Baru. Это очень удобно, так как дампы отделены от макета страницы, и мы также можем разместить к ним комментарий.

bdump([2, 4, 6, 8], 'четные числа до десяти');
bdump([1, 3, 5, 7, 9], 'нечетные числа до десяти');