Forcer la sortie des fonctions de debug Symfony pour le terminal
Publié le 13/12/2022 • Actualisé le 13/12/2022
Dans ce bout de code, nous voyons comment forcer la sortie des fonctions de debug Symfony pour le terminal. Quand on utilise les fonctions dd()
and dump()
, la sortie est automatiquement adaptée au contexte de l'appel. Si vous utilisez le terminal (les commandes, par exemple), la sortie sera du texte brut avec de belles couleurs ANSI. Si vous êtes dans un contexte d'une page web, vous aurez du HTML pour afficher le debug. Parfois, nous devons forcer le type de la sortie, et le contexte doit être corrigé. Par exemple, quand on fait des appels CURL dans le terminal. La SAPI PHP, dans ce cas, n'est pas CLI, et l'on a une sortie HTML qui est illisible. C'est là que le snippet est utile, appelez VarDumperHelper::forceCli()
avant vos appels dd()
et dump()
et vous êtes bons.
PS : Une autre option est de fixer la variable d'environnement VAR_DUMPER_FORMAT=cli
, mais ça n'a pas l'air de marcher sur ce projet, j'ai juste une page blanche. Je dois investiguer ce problème.
<?php
declare(strict_types=1);
namespace App\Helper;
use Symfony\Component\VarDumper\Cloner\VarCloner;
use Symfony\Component\VarDumper\Dumper\CliDumper;
use Symfony\Component\VarDumper\VarDumper;
/**
* Force the CLI output for the dd() and dump() functions. Useful when doing CURL
* calls in the terminal and wanting to debug.
*/
final class VarDumperHelper
{
/**
* @noinspection DisallowWritingIntoStaticPropertiesInspection
*/
public static function forceCli(): void
{
CliDumper::$defaultOutput = 'php://output';
VarDumper::setHandler(function ($var) {
$cloner = new VarCloner();
$dumper = new CliDumper();
$dumper->dump($cloner->cloneVar($var));
});
}
}
Plus sur Stackoverflow Lire la doc Snippet aléatoire