PHP 8.1 : récupérer la FQCN d'une variable avec ::class
Publié le 11/09/2022 • Actualisé le 11/09/2022
Dans ce bout de code, nous voyons comment récupérer la FQCN d'une variable avec ::class
. C'est une nouvelle fonctionnalité introduite dans PHP 8.1. Avant, on pouvait seulement utiliser :class
sur une classe. Maintenant, on peut aussi le faire sur une variable, ce qui est plus élégant que d'utiliser la fonction get_class()
. Retrouver tous les snippets relatifs aux nouvelles fonctionnalités PHP 8.1 ici.
<?php
declare(strict_types=1);
namespace App\Controller\Snippet;
use Symfony\Component\HttpFoundation\Request;
/**
* 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 Snippet219Trait
{
public function snippet219(Request $request): void
{
echo 'Class with ::class ='.$request::class.PHP_EOL;
echo 'Class with get_class() ='.\get_class($request);
// That's it! 😁
}
}
Exécuter le snippet ≪ this.showUnitTest ? this.trans.hide_unit_test : this.trans.show_unit_test ≫ Plus sur Stackoverflow Snippet aléatoire
<?php
declare(strict_types=1);
namespace App\Tests\Integration\Controller\Snippets;
use PHPUnit\Framework\TestCase;
use Symfony\Component\HttpFoundation\Request;
/**
* @see Snippet219Trait
*/
final class Snippet219Test extends TestCase
{
/**
* @see Snippet219Trait::snippet219
*/
public function testSnippet219(): void
{
$request = new Request();
self::assertSame($request::class, \get_class($request));
}
}