我遇到过这几次,但找不到解决方案。我要做的是在类属性中存储一个类名(包括命名空间,如果相关),并使用$this->property::CLASS_CONST;
调用一个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;
}
}
答案 0 :(得分:0)
使用PHP的constant
:
$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;
// works
echo constant($this->className . '::VALUE');
}
}
答案 1 :(得分:0)
我想这不起作用将是设计的。由于语义不明确。
您是否尝试获取属性并将其用作类名称。
或者您是否希望获得属性className::VALUE
的值。因为你可以有一个变量属性。
阅读也可能令人困惑。想象一下,在您的情况下,您的财产名为A
,那么它会显示echo $this->A::VALUE;
您希望发生什么?