0

私はこれに数回遭遇しましたが、解決策が見つかりません。私がやろうとしているのは、クラス名 (関連する場合は名前空間を含む) をクラス プロパティに格納し、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;
  }

}
4

2 に答える 2

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');
  }

}
于 2013-11-12T14:24:50.757 に答える