Дъмпване

Всеки дебъгър е добър приятел с функцията 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; // по подразбиране: 3
Debugger::$maxLength = 50; // по подразбиране: 150

Функцията dump() може да изведе и друга полезна информация. Константата Tracy\Dumper::LOCATION_SOURCE добавя подсказка (tooltip) с пътя до мястото, където е извикана функцията. Tracy\Dumper::LOCATION_LINK ни предоставя връзка към това място. Tracy\Dumper::LOCATION_CLASS при всеки дъмпнат обект извежда подсказка с пътя до файла, в който е дефиниран неговият клас. Константите се задават в променливата 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 Bar. Това е много удобно, тъй като дъмповете са отделени от лейаута на страницата и можем да добавим коментар към тях.

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