Création d'extensions de Tracy
Tracy est un excellent outil pour déboguer votre application. Cependant, vous avez parfois besoin de plus d'informations que celles offertes par Tracy. Vous apprendrez à connaître :
- Créer vos propres panneaux Tracy Bar
- Créer vos propres extensions Bluescreen
Vous pouvez trouver des extensions utiles pour Tracy sur Componette.
Extensions de la barre Tracy
La création d'une nouvelle extension pour Tracy Bar est simple. Vous devez implémenter l'interface
Tracy\IBarPanel
avec les méthodes getTab()
et getPanel()
. Ces méthodes doivent renvoyer
le code HTML d'un onglet (petite étiquette sur Tracy Bar) et d'un panneau (fenêtre contextuelle affichée après avoir cliqué
sur l'onglet). Si getPanel()
ne renvoie rien, seul l'onglet sera affiché. Si getTab()
ne renvoie rien,
rien n'est affiché et getPanel()
ne sera pas appelé.
class ExamplePanel implements Tracy\IBarPanel
{
public function getTab()
{
return /* ... */;
}
public function getPanel()
{
return /* ... */;
}
}
Enregistrement
L'inscription se fait en appelant Tracy\Bar::addPanel()
:
Tracy\Debugger::getBar()->addPanel(new ExamplePanel);
ou vous pouvez simplement enregistrer votre panneau dans la configuration de l'application :
tracy:
bar:
- ExamplePanel
Code HTML de l'onglet
devrait ressembler à quelque chose comme ceci :
<span title="Explaining tooltip">
<svg>...</svg>
<span class="tracy-label">Title</span>
</span>
L'image doit être au format SVG. Si vous n'avez pas besoin d'infobulle, vous pouvez omettre <span>
l'info-bulle.
Code HTML du panneau
devrait ressembler à quelque chose comme ceci :
<h1>Title</h1>
<div class="tracy-inner">
<div class="tracy-inner-container">
... content ...
</div>
</div>
Le titre doit être identique à celui de l'onglet ou contenir des informations supplémentaires.
Une extension peut être enregistrée plusieurs fois, il est donc recommandé de ne pas utiliser l'attribut id
pour le style. Vous pouvez utiliser des classes, de préférence au format
tracy-addons-<class-name>[-<optional>]
de préférence. Lors de la création d'un CSS, il est
préférable d'utiliser #tracy-debug .class
, car cette règle a une priorité supérieure à celle de la
réinitialisation.
Styles par défaut
Dans le panneau, les éléments <a>
, <table>
, <pre>
,
<code>
ont des styles par défaut. Pour créer un lien permettant de masquer ou d'afficher un autre élément,
connectez-les avec les attributs href
et id
et la classe tracy-toggle
.
<a href="#tracy-addons-className-{$counter}" class="tracy-toggle">Detail</a>
<div id="tracy-addons-className-{$counter}">...</div>
Si l'état par défaut est effondré, ajoutez la classe tracy-collapsed
aux deux éléments.
Utilisez un compteur statique pour éviter les doublons d'identifiants sur une page.
Extensions de Bluescreen
Vous pouvez ajouter vos propres visualisations d'exception ou panneaux, qui apparaîtront sur le bluescreen.
L'extension est faite comme ceci :
Tracy\Debugger::getBlueScreen()->addPanel(function (?Throwable $e) { // catched exception
return [
'tab' => '...Title...',
'panel' => '...content...',
];
});
La fonction est appelée deux fois, d'abord l'exception elle-même est passée dans le paramètre $e
et le panneau
retourné est rendu au début de la page. Si rien n'est renvoyé, le panneau n'est pas rendu. Ensuite, elle est appelée avec le
paramètre null
et le panneau renvoyé est rendu en dessous de la pile d'appels. Si la fonction renvoie
'bottom' => true
dans le tableau, le panneau est rendu tout en bas.