我正在尝试访问我的一个类中的类常量:
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