Récupérer le nom court d'une classe PHP
Publié le 05/02/2022 • Actualisé le 05/02/2022
Dans ce bout de code, nous voyons comment récupérer le nom court d'une classe PHP. Veuillez noter que même si la première solution utilise la réflexion, elle est très rapide et devrait être plus rapide que l'utilisation du composant String de Symfony, que je trouve néanmoins plus élégante.
<?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 Snippet189Trait
{
public function snippet189(): void
{
$article = new \App\Entity\Article();
echo (new \ReflectionClass($article))->getShortName().PHP_EOL;
echo u(\get_class($article))->afterLast('\\')->toString();
// That's it! 😁
}
}
Exécuter le snippet ≪ this.showUnitTest ? this.trans.hide_unit_test : this.trans.show_unit_test ≫ Plus sur Stackoverflow Lire la doc Snippet aléatoire
<?php
declare(strict_types=1);
namespace App\Tests\Integration\Controller\Snippets;
use PHPUnit\Framework\TestCase;
use function Symfony\Component\String\u;
/**
* @see Snippet189Trait
*/
final class Snippet189Test extends TestCase
{
/**
* @see Snippet189Trait::snippet189
*/
public function testSnippet189(): void
{
$article = new \App\Entity\Article();
$withRefection = (new \ReflectionClass($article))->getShortName();
$withSymfony = u(\get_class($article))->afterLast('\\')->toString();
self::assertSame('Article', $withSymfony);
self::assertSame($withRefection, $withSymfony);
}
}