一尘不染

使用包含常量名称的简单变量访问类常量

php

我正在尝试访问我的一个班级中的班级常量:

const MY_CONST = "value";

如果我有一个变量,该变量持有此常量的名称,如下所示:

$myVar = "MY_CONST";

我可以通过某种方式访问​​MY_CONST的值吗?

self::$myVar

显然不起作用,因为它用于静态属性。变量变量也不起作用。


阅读 232

收藏
2020-05-29

共1个答案

一尘不染

有两种方法可以执行此操作:使用常量函数或使用反射

常数函数

常量函数与通过声明的常量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
2020-05-29