Accéder aux constantes de classe à l'aide d'une simple variable contenant le nom de la constante
P粉691461301
P粉691461301 2023-10-20 14:57:01
0
2
615

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粉691461301
P粉691461301

répondre à tous(2)
P粉404539732

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粉103739566

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
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal