Creare le estensioni di Tracy
Tracy è un ottimo strumento per il debug dell'applicazione. Tuttavia, a volte sono necessarie più informazioni di quelle offerte da Tracy. Imparerete a conoscere:
- Creare i propri pannelli della barra Tracy
- Creare estensioni Bluescreen personalizzate
Potete trovare estensioni utili per Tracy su Componette.
Estensioni della barra Tracy
Creare una nuova estensione per Tracy Bar è semplice. È necessario implementare l'interfaccia Tracy\IBarPanel
con i metodi getTab()
e getPanel()
. I metodi devono restituire il codice HTML di una scheda (piccola
etichetta sulla barra Tracy) e di un pannello (pop-up visualizzato dopo aver fatto clic sulla scheda). Se getPanel()
non restituisce nulla, verrà visualizzata solo la scheda. Se getTab()
non restituisce nulla, non viene visualizzato
nulla e getPanel()
non verrà richiamato.
class ExamplePanel implements Tracy\IBarPanel
{
public function getTab()
{
return /* ... */;
}
public function getPanel()
{
return /* ... */;
}
}
Registrazione
La registrazione si effettua chiamando Tracy\Bar::addPanel()
:
Tracy\Debugger::getBar()->addPanel(new ExamplePanel);
oppure si può semplicemente registrare il pannello nella configurazione dell'applicazione:
tracy:
bar:
- ExamplePanel
Codice HTML della scheda
Dovrebbe avere un aspetto simile a questo:
<span title="Explaining tooltip">
<svg>...</svg>
<span class="tracy-label">Title</span>
</span>
L'immagine deve essere in formato SVG. Se non si ha bisogno del tooltip, si può tralasciare
<span>
fuori.
Codice HTML del pannello
Dovrebbe avere un aspetto simile a questo:
<h1>Title</h1>
<div class="tracy-inner">
<div class="tracy-inner-container">
... content ...
</div>
</div>
Il titolo deve essere lo stesso della scheda o contenere informazioni aggiuntive.
Un'estensione può essere registrata più volte, quindi si raccomanda di non usare l'attributo id
per lo stile. Si
possono usare le classi, preferibilmente nel formato tracy-addons-<class-name>[-<optional>]
nel formato
Quando si creano i CSS, è meglio usare #tracy-debug .class
, perché tale regola ha una priorità maggiore rispetto
a reset.
Stili predefiniti
Nel pannello, gli elementi <a>
, <table>
, <pre>
,
<code>
hanno stili predefiniti. Per creare un collegamento per nascondere o visualizzare altri elementi,
collegarli con gli attributi href
e id
e la classe tracy-toggle
.
<a href="#tracy-addons-className-{$counter}" class="tracy-toggle">Detail</a>
<div id="tracy-addons-className-{$counter}">...</div>
Se lo stato predefinito è collassato, aggiungere la classe tracy-collapsed
a entrambi gli elementi.
Utilizzare un contatore statico per evitare la duplicazione degli ID in una pagina.
Estensioni Bluescreen
È possibile aggiungere visualizzazioni o pannelli di eccezioni personalizzati, che appariranno sul bluescreen.
L'estensione è fatta in questo modo:
Tracy\Debugger::getBlueScreen()->addPanel(function (?Throwable $e) { // catched exception
return [
'tab' => '...Title...',
'panel' => '...content...',
];
});
La funzione viene chiamata due volte, prima viene passata l'eccezione stessa nel parametro $e
e il pannello
restituito viene reso all'inizio della pagina. Se non viene restituito nulla, il pannello non viene reso. Quindi viene richiamata
con il parametro null
e il pannello restituito viene reso sotto il callstack. Se la funzione restituisce
'bottom' => true
nell'array, il pannello viene reso in fondo.