suchen

Heim  >  Fragen und Antworten  >  Hauptteil

Greifen Sie auf Klassenkonstanten zu, indem Sie eine einfache Variable verwenden, die den Konstantennamen enthält

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粉691461301P粉691461301401 Tage vor591

Antworte allen(2)Ich werde antworten

  • P粉404539732

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

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

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

    我相信它也适用于 self::

    Antwort
    0
  • P粉103739566

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

    有两种方法可以做到这一点:使用 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

    Antwort
    0
  • StornierenAntwort