搜尋

首頁  >  問答  >  主體

使用包含常數名稱的簡單變數來存取類別常數

我正在嘗試存取我的一個類別中的類別常數:

const MY_CONST = "value";

如果我有一個變數來保存這個常數的名稱,如下所示:

$myVar = "MY_CONST";

我可以以某種方式存取 MY_CONST 的值嗎?

self::$myVar

這顯然不起作用,因為它是針對靜態屬性的。 另外,變數變數也不起作用。

P粉691461301P粉691461301405 天前597

全部回覆(2)我來回復

  • P粉404539732

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

    沒有對應的語法,但您可以使用明確查找:

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

    我相信它也適用於 self::

    回覆
    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

    回覆
    0
  • 取消回覆