如何使用另一个类的class属性访问类const

时间:2013-11-12 14:12:03

标签: php oop

我遇到过这几次,但找不到解决方案。我要做的是在类属性中存储一个类名(包括命名空间,如果相关),并使用$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;
  }

}

2 个答案:

答案 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;您希望发生什么?