Creación de extensiones de Tracy

Tracy es una gran herramienta para depurar tu aplicación. Sin embargo, a veces necesitas más información de la que Tracy ofrece. Aprenderás sobre:

  • Crear tus propios paneles Tracy Bar
  • Crear tus propias extensiones Bluescreen

Puedes encontrar extensiones útiles para Tracy en Componette.

Extensiones de la barra Tracy

Crear una nueva extensión para Tracy Bar es sencillo. Necesita implementar la interfaz Tracy\IBarPanel con los métodos getTab() y getPanel(). Los métodos deben devolver el código HTML de una pestaña (pequeña etiqueta en Tracy Bar) y un panel (ventana emergente que se muestra tras hacer clic en la pestaña). Si getPanel() no devuelve nada, sólo se mostrará la pestaña. Si getTab() no devuelve nada, no se mostrará nada y no se llamará a getPanel().

class ExamplePanel implements Tracy\IBarPanel
{
	public function getTab()
	{
		return /* ... */;
	}

	public function getPanel()
	{
		return /* ... */;
	}
}

Registro

La inscripción se realiza llamando a Tracy\Bar::addPanel():

Tracy\Debugger::getBar()->addPanel(new ExamplePanel);

o simplemente puede registrar su panel en la configuración de la aplicación:

tracy:
	bar:
		- ExamplePanel

Pestaña Código HTML

Debería tener este aspecto:

<span title="Explaining tooltip">
	<svg>...</svg>
	<span class="tracy-label">Title</span>
</span>

La imagen debe estar en formato SVG. Si no necesitas tooltip, puedes dejar <span> .

Código HTML del panel

Debería tener este aspecto:

<h1>Title</h1>

<div class="tracy-inner">
<div class="tracy-inner-container">
	... content ...
</div>
</div>

El título debe ser el mismo que en la pestaña o contener información adicional.

Una extensión puede registrarse varias veces, por lo que se recomienda no utilizar el atributo id para el estilo. Puede utilizar clases, preferiblemente en tracy-addons-<class-name>[-<optional>] formato. Al crear CSS, es mejor utilizar #tracy-debug .class, porque dicha regla tiene mayor prioridad que reset.

Estilos por defecto

En el panel, elementos <a>, <table>, <pre>, <code> tienen estilos predeterminados. Para crear un enlace para ocultar o mostrar otro elemento, conéctelos con los atributos href y id y la clase tracy-toggle.

<a href="#tracy-addons-className-{$counter}" class="tracy-toggle">Detail</a>

<div id="tracy-addons-className-{$counter}">...</div>

Si el estado por defecto es colapsado, añada la clase tracy-collapsed a ambos elementos.

Utilice un contador estático para evitar la duplicación de ID en una página.

Extensiones Bluescreen

Puede añadir sus propias visualizaciones de excepciones o paneles, que aparecerán en el bluescreen.

La extensión se hace así:

Tracy\Debugger::getBlueScreen()->addPanel(function (?Throwable $e) { // catched exception
	return [
		'tab' => '...Title...',
		'panel' => '...content...',
	];
});

La función se llama dos veces, primero se pasa la propia excepción en el parámetro $e y el panel devuelto se renderiza al principio de la página. Si no se devuelve nada, el panel no se renderiza. Luego se llama con el parámetro null y el panel devuelto se renderiza debajo de la pila de llamadas. Si la función devuelve 'bottom' => true en el array, el panel se renderiza en la parte inferior.