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));
}
}
A vous de jouer !
Ces articles vous ont été utiles ? Vous pouvez m'aider à votre tour de plusieurs manières : (cliquez sur le lien "reply" dans à droite pour me contacter )
- Me remonter des erreurs ou typos.
- Me remonter des choses qui pourraient être améliorées.
- Aimez et repostez !
- Suivez moi sur Bluesky 🦋
- Inscrivez-vous au flux RSS.
- Cliquez sur les boutons Plus sur Stackoverflow pour me faire gagner des badges "annonceur" 🏅.
Merci et à très bientôt sur Strangebuzz ! 😉
