我正在尝试访问我的一个班级中的班级常量:
const MY_CONST = "value";
如果我有一个变量,该变量持有此常量的名称,如下所示:
$myVar = "MY_CONST";
我可以通过某种方式访问MY_CONST的值吗?
self::$myVar
显然不起作用,因为它用于静态属性。变量变量也不起作用。
有两种方法可以执行此操作:使用常量函数或使用反射。
常量函数与通过声明的常量define以及类常量一起使用:
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