Laděnka je užitečnou každodenní pomocnicí PHP programátora. Její oficiální jméno zní Tracy, dříve Nette\Debug.

Aktuální informace najdete na webu Nette Framework.

Každý ladič je dobrým kamarádem s funkcí var_dump, která podrobně vypíše obsah proměnné. Bohužel v prostředí HTML výpis pozbude formátování a slije se do jednoho řádku, o sanitizaci HTML kódu ani nemluvě. V praxi je nezbytné var_dump nahradit šikovnější funkcí. Tou je právě Debug::dump()

$arr = array(10, 20.2, true, null, 'hello');

Debug::dump($arr);
// včetně jmenného prostoru Nette\Debug::dump($arr);

vygeneruje výstup:

<pre><span style="color:gray">array</span>(5) {
  [0] => <span style="color:gray">int</span>(10)
  [1] => <span style="color:gray">float</span>(20.2)
  [2] => <span style="color:gray">bool</span>(true)
  [3] => <span style="color:gray">null</span>
  [4] => <span style="color:gray">string</span>(5) "hello"
}
</pre>

Dalším užitečným nástrojem ladiče jsou stopky s přesností na mikrosekundy:

Debug::timer();

// princi můj malinký spi, ptáčkové sladce již sní...
sleep(2);

$elapsed = Debug::timer();
// $elapsed ≈ 2

Tohle všechno jsou sice užitečné drobnosti, skutečným killerem je však jiná Laděnčina vlastnost.
Zpráva o nezachycené výjimce nebo chybě poskytuje vývojáři důležité informace o tom, kde a proč k ní došlo. Standardní výstup v PHP vypadá asi takto:

Standardní podoba nezachycené výjimky

Pusťme však ke slovu Laděnku. Po aktivaci příkazem Debug::enable() nám předvede svou nejvíce sexy polohu:

Nezachycená výjimka v provedení NDebug

Takto vypadá výjimka, takto vypadá vygenerovaná chyba. To je pak jiné ladění, co?

Snad nemusím dodávat, že vypisování chyb se nesmí nikdy dostat na produkční server. Je to výborná společnice na pracovišti, ale nikdy ji nesmíme brát sebou ven. Je totiž děsně ukecaná a vyzradí na vás úplně všechno (nicméně kdyby k tomu náhodou došlo, má integrovaný systém pro skrytí citlivých políček, např. hesel). Na produkčním serveru je však možné nechat výpisy ukládat do adresáře nebo odesílat administrátorovi emailem.