Php 如何使用另一个类的class属性访问class const
我已经遇到过几次了,但都找不到解决办法。我试图做的是在类属性中存储一个类名(包括相关的名称空间),并使用Php 如何使用另一个类的class属性访问class const,php,oop,Php,Oop,我已经遇到过几次了,但都找不到解决办法。我试图做的是在类属性中存储一个类名(包括相关的名称空间),并使用$this->property::class_const 我知道如何做到这一点的唯一方法是使用局部变量而不是类属性。有人知道这是为什么,或者有没有办法?我的示例代码如下: $o = new B(); $o->summon(); class A { CONST VALUE = 'HELLO WORLD'; } class B { protected $className
$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;
}
}
使用PHP的常量
:
$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');
}
}
我想这不是故意的。因为语义不清楚
您是否正在尝试获取您想要的属性并将其用作类名
或者您希望获取属性className::value
的值。因为你可以有一个变量属性
读起来也会让人困惑。假设您的属性名为A
,那么它将读取echo$this->A::VALUE代码>您希望发生什么?因为您无法从公共方法直接访问$this->className可能重复谢谢,我喜欢这种方法。