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.