Dumpowanie

Każdy programista debugujący jest dobrym przyjacielem funkcji var_dump, która szczegółowo wypisuje zawartość zmiennej. Niestety, w środowisku HTML wynik traci formatowanie i zlewa się w jedną linię, nie wspominając o sanitizacji kodu HTML. W praktyce konieczne jest zastąpienie var_dump bardziej poręczną funkcją. Tą funkcją jest właśnie dump().

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

dump($arr);
// lub Debugger::dump($arr);

generuje wynik:

Domyślny jasny motyw można zmienić na ciemny:

Debugger::$dumpTheme = 'dark';

Możemy również zmienić głębokość zagnieżdżenia za pomocą Debugger::$maxDepth oraz długość wyświetlanych etykiet za pomocą Debugger::$maxLength. Niższe wartości naturalnie przyspieszą Tracy.

Debugger::$maxDepth = 2; // domyślnie: 3
Debugger::$maxLength = 50; // domyślnie: 150

Funkcja dump() potrafi wypisać również inne przydatne informacje. Stała Tracy\Dumper::LOCATION_SOURCE dodaje podpowiedź (tooltip) ze ścieżką do miejsca, w którym funkcja została wywołana. Tracy\Dumper::LOCATION_LINK dostarcza nam link do tego miejsca. Tracy\Dumper::LOCATION_CLASS przy każdym dumpowanym obiekcie wypisuje podpowiedź ze ścieżką do pliku, w którym zdefiniowana jest jego klasa. Stałe ustawia się w zmiennej Debugger::$showLocation jeszcze przed wywołaniem dump(). Jeśli chcemy ustawić wiele wartości naraz, łączymy je za pomocą operatora |.

Debugger::$showLocation = Tracy\Dumper::LOCATION_SOURCE; // Ustawia tylko wyświetlanie informacji o miejscu wywołania funkcji
Debugger::$showLocation = Tracy\Dumper::LOCATION_CLASS | Tracy\Dumper::LOCATION_LINK; // Ustawia jednocześnie wyświetlanie linku i ścieżki do klasy
Debugger::$showLocation = false; // Wyłącza wyświetlanie dodatkowych informacji
Debugger::$showLocation = true; // Włącza wyświetlanie wszystkich dodatkowych informacji

Praktyczną alternatywą dla dump() jest dumpe() (dump & exit) oraz bdump(). Pozwala on nam wypisać wartość zmiennej w panelu Paska Tracy. Jest to bardzo przydatne, ponieważ zrzuty są oddzielone od układu strony, a także możemy do nich dodać komentarz.

bdump([2, 4, 6, 8], 'liczby parzyste do dziesięciu');
bdump([1, 3, 5, 7, 9], 'liczby nieparzyste do dziesięciu');