Vérifier si une variable PHP est une énumération

Publié le 09/12/2022 • Mis à jour le 09/12/2022


English language detected! 🇬🇧

  We noticed that your browser is using English. Do you want to read this post in this language?

Read the english version 🇬🇧 Close

Dans ce bout de code, nous voyons comment tester si une variable PHP est une énumération. Non, il n'y a pas de fonction is_enum(), les fonctions is_*() ne s'appliquent pas sur les objets. On doit faire ce test d'instance sur l'interface UnitEnum à la place.


<?php

declare(strict_types=1);

namespace App\Controller\Snippet;

use App\Entity\Article;
use App\Enum\ArticleType;

/**
 * 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 Snippet233Trait
{
    public function snippet233(): void
    {
        $myEnumCase = ArticleType::BLOG_POST;
        $article = new Article();

        echo '$myEnumCase: '.($myEnumCase instanceof \UnitEnum ? 'it is an enum! ✅' : 'Not an enum ❌'); // @phpstan-ignore-line
        echo PHP_EOL;
        echo '$article: '.($article instanceof \UnitEnum ? 'it is an enum ! ✅' : 'Not an enum ❌'); // @phpstan-ignore-line

        // That's it! 😁
    }
}

 Exécuter le snippet  Plus sur Stackoverflow   Lire la doc  Snippet aléatoire