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可能重复谢谢,我喜欢这种方法。