使用常量作为类名

OTA*_*TAR 6 php language-construct

我需要使用常量作为类名来访问此类静态属性,即

class a {

    public static $name = "Jon";

}

define("CLASSNAME", "a");

echo CLASSNAME::$name;
Run Code Online (Sandbox Code Playgroud)

这会返回错误,该类CLASSNAME不存在.有一些解决方案吗?

bit*_*ing 5

通过反射是可能的:

class a {

    public static $name = "Jon";

}

define("CLASSNAME", "a");

$obj = new ReflectionClass(CLASSNAME);
echo $obj->getStaticPropertyValue("name");
Run Code Online (Sandbox Code Playgroud)

如果这是一个好的设计选择,则是另一个问题。