我遇到过几次,找不到解决方案。我想要做的是在类属性中存储一个类名(包括命名空间,如果相关)并使用调用 const$this->property::CLASS_CONST;
我想出如何做到这一点的唯一方法是使用局部变量而不是类属性。任何人都知道这是为什么,或者是否有任何解决方法?我的示例代码如下:
$o = new B();
$o->summon();
class A {
CONST VALUE = 'HELLO WORLD';
}
class B {
protected $className = 'A';
public function summon() {
//works
$class = $this->className;
echo $class::VALUE;
//doesn't work
echo $this->className::VALUE;
}
}