Tracy kiterjesztések készítése
A Tracy kiváló eszközt biztosít az alkalmazás debuggolásához. Néha azonban szeretne néhány további információt is kéznél tartani. Megmutatjuk, hogyan írhat saját kiterjesztést a Tracy Barhoz, hogy a fejlesztés még kellemesebb legyen.
- Saját panel létrehozása a Tracy Barhoz
- Saját kiterjesztés létrehozása a Bluescreenhez
A kész Tracy kiterjesztések repositoryját a “Componette”-en találja:https://componette.org/search/tracy.
Kiterjesztések a Tracy Barhoz
Új kiterjesztés létrehozása a Tracy Barhoz nem bonyolult. Létrehoz egy objektumot, amely implementálja a
Tracy\IBarPanel interfészt, amelynek két metódusa van: getTab() és getPanel().
A metódusoknak vissza kell adniuk a fül (a Bar-on közvetlenül megjelenő kis címke) és a panel HTML kódját. Ha a
getPanel() semmit sem ad vissza, csak maga a címke jelenik meg. Ha a getTab() semmit sem ad vissza,
egyáltalán semmi sem jelenik meg, és a getPanel() sem hívódik meg többé.
class ExamplePanel implements Tracy\IBarPanel
{
	public function getTab()
	{
		return /* ... */;
	}
	public function getPanel()
	{
		return /* ... */;
	}
}
Regisztráció
A regisztráció a Tracy\Bar::addPanel() segítségével történik:
Tracy\Debugger::getBar()->addPanel(new ExamplePanel);
Vagy regisztrálhatja a panelt közvetlenül az alkalmazás konfigurációjában:
tracy:
	bar:
		- ExamplePanel
A fül HTML kódja
Körülbelül így kell kinéznie:
<span title="Magyarázó címke">
	<svg>...</svg>
	<span class="tracy-label">Cím</span>
</span>
A képnek SVG formátumúnak kell lennie. Ha nincs szükség magyarázó címkére, a <span>
elhagyható.
A panel HTML kódja
Körülbelül így kell kinéznie:
<h1>Cím</h1>
<div class="tracy-inner">
<div class="tracy-inner-container">
	... tartalom ...
</div>
</div>
A címnek vagy meg kell egyeznie a fül címével, vagy tartalmazhat további adatokat.
Számolni kell azzal, hogy egy kiterjesztés többször is regisztrálható, például eltérő beállításokkal, így a
stílusozáshoz nem használhatók CSS id-k, csak class-ok, mégpedig
tracy-addons-<OsztályNév>[-<opcionális>] formában. Az osztályt ezután írja be a div-be a
tracy-inner osztállyal együtt. CSS írásakor hasznos a #tracy-debug .osztály írásmód, mert a
szabálynak így magasabb prioritása lesz, mint a resetnek.
Alapértelmezett stílusok
A panelben előre stílusozottak az <a>, <table>, <pre>,
<code> elemek. Ha olyan linket szeretne létrehozni, amely elrejt és megjelenít egy másik elemet, kösse
össze őket a href és id attribútumokkal és a tracy-toggle osztállyal:
<a href="#tracy-addons-OsztályNév-{$counter}" class="tracy-toggle">Részletek</a>
<div id="tracy-addons-OsztályNév-{$counter}">...</div>
Ha az alapértelmezett állapotnak összecsukottnak kell lennie, adjon hozzá mindkét elemhez a tracy-collapsed
osztályt.
A számlálót használja statikusként, hogy ne jöjjenek létre duplikált ID-k egy oldalon.
Kiterjesztések a Bluescreenhez
Ezzel a módszerrel hozzáadhat saját kivétel-vizualizációkat vagy paneleket, amelyek a bluescreenen jelennek meg.
A kiterjesztés ezzel a paranccsal hozható létre:
Tracy\Debugger::getBlueScreen()->addPanel(function (?Throwable $e) { // elkapott kivétel
	return [
		'tab' => '...Címke...',
		'panel' => '...Panel HTML kódja...',
	];
});
A függvény kétszer hívódik meg, először a $e paraméterben maga a kivétel kerül átadásra, és a
visszaadott panel az oldal elején rajzolódik ki. Ha semmit sem ad vissza, a panel nem rajzolódik ki. Ezután null
paraméterrel hívódik meg, és a visszaadott panel a callstack alatt rajzolódik ki. Ha a függvény a tömbben a
'bottom' => true kulcsot adja vissza, a panel teljesen alulra kerül.