Maison  >  Questions et réponses  >  le corps du texte

Accéder aux constantes de classe à l'aide d'une simple variable contenant le nom de la constante

J'essaie d'accéder à une constante de classe dans une de mes classes :

const MY_CONST = "value";

Si j'ai une variable pour contenir le nom de cette constante comme ceci :

$myVar = "MY_CONST";

Puis-je accéder à la valeur de MY_CONST d'une manière ou d'une autre ?

self::$myVar

Cela ne fonctionne évidemment pas puisqu'il s'agit d'une propriété statique. De plus, les variables variables ne fonctionnent pas non plus.

P粉691461301P粉691461301386 Il y a quelques jours570

répondre à tous(2)je répondrai

  • P粉404539732

    P粉4045397322023-10-21 13:52:00

    Il n'y a pas de syntaxe correspondante, mais vous pouvez utiliser la recherche explicite :

    print constant("classname::$myConst");

    Je crois que ça marche pour self:: aussi.

    répondre
    0
  • P粉103739566

    P粉1037395662023-10-21 13:02:38

    Il existe deux façons de procéder : en utilisant la fonction constante ou en utilisant réflexion.

    Fonction constante

    Les fonctions constantes s'appliquent aux constantes déclarées via define ainsi qu'aux constantes de classe :

    class A
    {
        const MY_CONST = 'myval';
    
        static function test()
        {
            $c = 'MY_CONST';
            return constant('self::'. $c);
        }
    }
    
    echo A::test(); // output: myval

    Cours de réflexion

    La deuxième méthode, plus laborieuse, est la réflexion :

    $ref = new ReflectionClass('A');
    $constName = 'MY_CONST';
    echo $ref->getConstant($constName); // output: myval

    répondre
    0
  • Annulerrépondre