Récupérer le nom du type d'une variable pour déboguer avec PHP
Publié le 23/04/2022 • Actualisé le 23/04/2022
Dans ce bout de code, nous voyons comment récupérer le nom du type d'une variable pour déboguer. La fonction The get_debug_type()
a été introduite dans PHP 8 et est encore méconnue. Avant, on devait utiliser la fonction gettype()
. Pour comprendre la différence avec sa grande sœur, j'affiche la sortie des deux fonctions. Comme on peut le voir, la nouvelle fonction est spécialement pratique avec les objets puisqu'elle affiche le nom de la classe au lieu du très générique type object
.
<?php
declare(strict_types=1);
namespace App\Controller\Snippet;
/**
* 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 Snippet199Trait
{
public function snippet199(): void
{
/** @var resource $fp */
$fp = fopen(__FILE__, 'rb');
/** @var resource $fpClosed */
$fpClosed = fopen(__FILE__, 'rb');
fclose($fpClosed);
$variables = [
'null' => null,
'true' => true,
'false' => false,
'555' => 555,
'0.5' => 0.5,
"'foo'" => 'foo',
"['foo' => 'bar']" => ['foo' => 'bar'],
'$fp' => $fp,
'$fpClosed' => $fpClosed,
'$this' => $this,
'new class {}' => new class {}, // @phpstan-ignore-line, false positive
'function() {}' => static function () {},
];
foreach ($variables as $code => $variable) {
echo 'get_debug_type('.$code.') = '.get_debug_type($variable).PHP_EOL;
echo 'gettype('.$code.') = '.\gettype($variable).PHP_EOL.PHP_EOL;
}
fclose($fp);
// That's it! 😁
}
}
Exécuter le snippet Plus sur Stackoverflow Lire la doc Plus sur le web Snippet aléatoire