Maison > Questions et réponses > le corps du texte
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粉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.
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.
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
La deuxième méthode, plus laborieuse, est la réflexion :
$ref = new ReflectionClass('A'); $constName = 'MY_CONST'; echo $ref->getConstant($constName); // output: myval