Extensions du panneau Tracy Flight
Il s'agit d'un ensemble d'extensions pour enrichir le travail avec Flight.
- Flight - Analyser toutes les variables Flight.
- Database - Analyser toutes les requêtes exécutées sur la page (si vous initialisez correctement la connexion à la base de données)
- Request - Analyser toutes les variables
$_SERVERet examiner toutes les charges utiles globales ($_GET,$_POST,$_FILES) - Session - Analyser toutes les variables
$_SESSIONsi les sessions sont actives. - Twig (optionnel) - Analyser le temps de rendu des templates Twig, la mémoire et quels templates/blocs/macros ont été exécutés (nécessite
twig/twiget une configurationtwig_profile)
Ceci est particulièrement utile avec le squelette officiel, qui utilise Twig par défaut : la même disposition Outils IA suit également apparaît clairement sur la barre Tracy.
C'est le panneau

Et chaque panneau affiche des informations très utiles sur votre application !

Cliquez ici pour voir le code.
Installation
Exécutez composer require flightphp/tracy-extensions --dev et vous êtes prêt !
Twig n'est pas une dépendance obligatoire du package. Installez twig/twig uniquement si vous voulez le panneau Twig (le squelette le fait déjà pour les vues).
Configuration
Il y a très peu de configuration nécessaire pour commencer. Vous devrez initialiser le débogueur Tracy avant d'utiliser ceci https://tracy.nette.org/en/guide :
<?php
use Tracy\Debugger;
use flight\debug\tracy\TracyExtensionLoader;
// code de bootstrap
require __DIR__ . '/vendor/autoload.php';
Debugger::enable();
// Vous pouvez avoir besoin de spécifier votre environnement avec Debugger::enable(Debugger::DEVELOPMENT)
// si vous utilisez des connexions à la base de données dans votre application, il y a un
// wrapper PDO requis à utiliser UNIQUEMENT EN DÉVELOPPEMENT (pas en production s'il vous plaît !)
// Il a les mêmes paramètres qu'une connexion PDO régulière
$pdo = new PdoQueryCapture('sqlite:test.db', 'user', 'pass');
// ou si vous attachez ceci au framework Flight
Flight::register('db', PdoQueryCapture::class, ['sqlite:test.db', 'user', 'pass']);
// maintenant chaque fois que vous effectuez une requête, le temps, la requête et les paramètres seront capturés
// Cela connecte les points
if(Debugger::$showBar === true) {
// Cela doit être false ou Tracy ne peut pas réellement rendre :(
Flight::set('flight.content_length', false);
new TracyExtensionLoader(Flight::app());
}
// plus de code
Flight::start();Configuration supplémentaire
Données de session
Si vous avez un gestionnaire de session personnalisé (comme ghostff/session), vous pouvez passer n'importe quel tableau de données de session à Tracy et il le sortira automatiquement pour vous. Vous le passez avec la clé session_data dans le deuxième paramètre du constructeur TracyExtensionLoader.
use Ghostff\Session\Session;
// ou utiliser flight\Session;
require 'vendor/autoload.php';
$app = Flight::app();
$app->register('session', Session::class);
if(Debugger::$showBar === true) {
// Cela doit être false ou Tracy ne peut pas réellement rendre :(
Flight::set('flight.content_length', false);
new TracyExtensionLoader(Flight::app(), [ 'session_data' => Flight::session()->getAll() ]);
}
// routes et autres choses...
Flight::start();Panneau Twig (optionnel)
Si votre application utilise Twig (y compris le squelette officiel), vous pouvez afficher les métriques des templates sur la barre Tracy. Créez un Profile Twig, attachez ProfilerExtension à votre environnement, puis passez ce profil au loader sous la clé twig_profile. Attachez le profilage uniquement en développement.
<?php
use flight\debug\tracy\TracyExtensionLoader;
use flight\debug\tracy\TwigTracyExtension;
use Tracy\Debugger;
use Twig\Environment;
use Twig\Extension\ProfilerExtension;
use Twig\Loader\FilesystemLoader;
use Twig\Profiler\Profile;
$loader = new FilesystemLoader(__DIR__ . '/views');
$twig = new Environment($loader, [
'debug' => true,
'cache' => false,
]);
// Optionnel : exposer les helpers de dump Tracy dans les templates
// {{ dump(var) }}, {{ bdump(var) }}, {{ dumpe(var) }}
$twig->addExtension(new TwigTracyExtension());
$tracyConfig = [];
if (Debugger::$showBar === true) {
$profile = new Profile();
$twig->addExtension(new ProfilerExtension($profile));
$tracyConfig['twig_profile'] = $profile;
}
if (Debugger::$showBar === true) {
Flight::set('flight.content_length', false);
new TracyExtensionLoader(Flight::app(), $tracyConfig);
}
// Mapper Flight::render() à Twig (exemple)
Flight::map('render', function (string $template, array $data = []) use ($twig) {
if (substr($template, -5) !== '.twig') {
$template .= '.twig';
}
echo $twig->render($template, $data);
});Ce que le panneau affiche
- Temps de rendu Twig total et mémoire
- Nombre d'appels de templates / blocs / macros
- Chaque template qui a été rendu, avec son propre temps et mémoire
L'onglet Twig est caché quand aucun template n'a été rendu pour la requête, ou quand vous omettez twig_profile (ou n'avez pas Twig installé)—les autres panneaux Flight continuent de fonctionner.
Dans un services.php de style squelette, construisez le même $profile / ProfilerExtension quand le debug est activé, passez twig_profile dans TracyExtensionLoader, et continuez à utiliser votre environnement Twig partagé pour $app->render().
Latte
PHP 8.1+ est requis pour cette section.
Si vous avez Latte installé dans votre projet, Tracy a une intégration native avec Latte pour analyser vos templates. Vous enregistrez simplement l'extension avec votre instance Latte (c'est le pont Tracy de Latte lui-même, pas le panneau Twig ci-dessus).
require 'vendor/autoload.php';
$app = Flight::app();
$app->map('render', function($template, $data, $block = null) {
$latte = new Latte\Engine;
// autres configurations...
// ajouter l'extension uniquement si la barre de debug Tracy est activée
if(Debugger::$showBar === true) {
// c'est ici que vous ajoutez le panneau Latte à Tracy
$latte->addExtension(new Latte\Bridges\Tracy\TracyExtension);
}
$latte->render($template, $data, $block);
});Voir aussi
- Tracy - Configuration de base de Tracy pour Flight
- Twig - Templating utilisé par le squelette et le panneau Twig
- Templates - Comment Flight mappe
renderà Twig/Latte - Installation - Le squelette inclut tracy-extensions en dev