使用包含常數名稱的簡單變數來存取類別常數
P粉691461301
P粉691461301 2023-10-20 14:57:01
0
2
573

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

const MY_CONST = "value";

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

$myVar = "MY_CONST";

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

self::$myVar

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

P粉691461301
P粉691461301

全部回覆(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
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板