我正在嘗試存取我的一個類別中的類別常數:
const MY_CONST = "value";
如果我有一個變數來保存這個常數的名稱,如下所示:
$myVar = "MY_CONST";
我可以以某種方式存取 MY_CONST 的值嗎?
self::$myVar
這顯然不起作用,因為它是針對靜態屬性的。 另外,變數變數也不起作用。
P粉4045397322023-10-21 13:52:00
沒有對應的語法,但您可以使用明確查找:
print constant("classname::$myConst");
我相信它也適用於 self::
。
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