Crearea extensiilor pentru Tracy
Tracy oferă un instrument excelent pentru depanarea aplicației dvs. Uneori, însă, ați dori să aveți la îndemână și alte informații. Vom arăta cum să scrieți propria extensie pentru Tracy Bar, pentru a face dezvoltarea și mai plăcută.
- Crearea unui panou personalizat pentru Tracy Bar
- Crearea unei extensii personalizate pentru Bluescreen
Un depozit de extensii gata făcute pentru Tracy poate fi găsit la Componette.
Extensii pentru Tracy Bar
Crearea unei noi extensii pentru Tracy Bar nu este complicată. Creați un obiect care implementează interfața
Tracy\IBarPanel
, care are două metode getTab()
și getPanel()
. Metodele trebuie să
returneze codul HTML al tab-ului (eticheta mică afișată direct pe Bar) și al panoului. Dacă getPanel()
nu
returnează nimic, se va afișa doar eticheta. Dacă getTab()
nu returnează nimic, nu se va afișa nimic și nici
getPanel()
nu va mai fi apelată.
class ExamplePanel implements Tracy\IBarPanel
{
public function getTab()
{
return /* ... */;
}
public function getPanel()
{
return /* ... */;
}
}
Înregistrare
Înregistrarea se face folosind Tracy\Bar::addPanel()
:
Tracy\Debugger::getBar()->addPanel(new ExamplePanel);
Sau puteți înregistra panoul direct în configurația aplicației:
tracy:
bar:
- ExamplePanel
Codul HTML al tab-ului
Ar trebui să arate aproximativ așa:
<span title="Etichetă explicativă">
<svg>...</svg>
<span class="tracy-label">Titlu</span>
</span>
Imaginea ar trebui să fie în format SVG. Dacă descrierea explicativă nu este necesară, <span>
cu
atributul title
poate fi omis.
Codul HTML al panoului
Ar trebui să arate aproximativ așa:
<h1>Titlu</h1>
<div class="tracy-inner">
<div class="tracy-inner-container">
... conținut ...
</div>
</div>
Titlul ar trebui să fie fie același cu titlul tab-ului, fie poate conține informații suplimentare.
Trebuie luat în considerare faptul că o extensie se poate înregistra de mai multe ori, de exemplu cu setări diferite, deci
pentru stilizare nu se pot folosi id-uri CSS, ci doar clase, în formatul
tracy-addons-<NumeClasa>[-<optional>]
. Clasa se scrie apoi în div împreună cu clasa
tracy-inner
. La scrierea CSS, este util să scrieți #tracy-debug .clasa
, deoarece regula va avea
o prioritate mai mare decât resetarea.
Stiluri implicite
În panou sunt prestilizate <a>
, <table>
, <pre>
,
<code>
. Dacă doriți să creați un link care ascunde și afișează un alt element, conectați-le prin
atributele href
și id
și clasa tracy-toggle
:
<a href="#tracy-addons-NumeClasa-{$counter}" class="tracy-toggle">Detalii</a>
<div id="tracy-addons-NumeClasa-{$counter}">...</div>
Dacă starea implicită trebuie să fie restrânsă, adăugați ambelor elemente clasa tracy-collapsed
.
Folosiți un contor static pentru a evita crearea de ID-uri duplicate pe aceeași pagină.
Extensii pentru Bluescreen
În acest mod se pot adăuga vizualizări personalizate ale excepțiilor sau panouri care se afișează pe bluescreen.
Extensia se creează cu această comandă:
Tracy\Debugger::getBlueScreen()->addPanel(function (?Throwable $e) { // excepția capturată
return [
'tab' => '...Etichetă...',
'panel' => '...Cod HTML al panoului...',
];
});
Funcția este apelată de două ori, mai întâi în parametrul $e
este transmisă excepția însăși și panoul
returnat se desenează la începutul paginii. Dacă nu returnează nimic, panoul nu se desenează. Apoi este apelată cu
parametrul null
și panoul returnat se desenează sub callstack. Dacă funcția returnează în array cheia
'bottom' => true
, panoul se desenează complet jos.