Récupérer le nom de la fonction appelante dans un message de debug avec PHP
Publié le 22/09/2022 • Actualisé le 22/09/2022
Dans ce bout de code, nous voyons comment récupérer le nom de la fonction appelante dans un message de debug avec PHP. C'est un besoin courant, quand on veut logger ou afficher un message de debug utile avec du contexte. Les deux arguments de la fonction debug_backtrace()
sont importants pour des raisons de performance, sinon on récupère la trace complète du script en cours avec des objets.
<?php
declare(strict_types=1);
namespace App\Controller\Snippet;
use function Symfony\Component\String\u;
/**
* J'utilise un trait PHP afin d'isoler chaque snippet dans un fichier.
* Ce code doit être apellé d'un contrôleur Symfony étendant AbstractController (depuis Symfony 4.2)
* ou Symfony\Bundle\FrameworkBundle\Controller\Controller (Symfony <= 4.1).
* Les services sont injectés dans le constructeur du contrôleur principal.
*/
trait Snippet220Trait
{
public function snippet220(): void
{
$dbg = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS, 2);
$file = u($dbg[0]['file'] ?? '')->after('strangebuzz.com')->toString(); // only keep the root project path
$line = $dbg[0]['line'] ?? '';
$function = $dbg[1]['function'] ?? '';
$class = $dbg[1]['class'] ?? '';
echo "This function was called by $class::$function() at line $line (from file $file).";
// That's it! 😁
}
}
Exécuter le snippet Plus sur Stackoverflow Lire la doc Snippet aléatoire