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);
}
}
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 ! 😉