Greifen Sie auf Klassenkonstanten zu, indem Sie eine einfache Variable verwenden, die den Konstantennamen enthält
P粉691461301
P粉691461301 2023-10-20 14:57:01
0
2
575

Ich versuche, auf eine Klassenkonstante in einer meiner Klassen zuzugreifen:

const MY_CONST = "value";

Wenn ich eine Variable habe, die den Namen dieser Konstante wie folgt enthält:

$myVar = "MY_CONST";

Kann ich irgendwie auf den Wert von MY_CONST zugreifen?

self::$myVar

Das funktioniert offensichtlich nicht, da es sich um eine statische Eigenschaft handelt. Außerdem funktionieren variable Variablen ebenfalls nicht.

P粉691461301
P粉691461301

Antworte allen(2)
P粉404539732

没有相应的语法,但您可以使用显式查找:

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

我相信它也适用于 self::

P粉103739566

有两种方法可以做到这一点:使用 constant 函数或使用反射

常量函数

常量函数适用于通过 define 声明的常量以及类常量:

class A
{
    const MY_CONST = 'myval';

    static function test()
    {
        $c = 'MY_CONST';
        return constant('self::'. $c);
    }
}

echo A::test(); // output: myval

反射类

第二种更费力的方法是通过反射:

$ref = new ReflectionClass('A');
$constName = 'MY_CONST';
echo $ref->getConstant($constName); // output: myval
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage