在PHP中访问注入类的常量

时间:2017-05-25 06:09:20

标签: php class

class A{
    const MY_CONSTANT = 'my constant';
}

class B{
    protected $a;

    public function __construct(A $a)
    {
        $this->a = $a;
    }

    public function someFunction()
    {
        return $this->a::MY_CONSTANT;
    }

}

为什么不能以这种方式访问​​常量 - $ this-> a :: MY_CONSTANT?有人知道其他任何方式吗?

2 个答案:

答案 0 :(得分:2)

以上可以通过这种方式实现。这里我们使用get_class函数将classname作为字符串。我们将它存储在变量中,然后使用该变量检索常量值。

Try this code snippet here

<?php
ini_set('display_errors', 1);
class A{
    const MY_CONSTANT = 'my constant';
}

class B{
    protected $a;

    public function __construct(A $a)
    {

        $this->a = $a;
    }

    public function someFunction()
    {
        $class=get_class($this->a);
        echo $class::MY_CONSTANT;
    }

}
$object=new B(new A());
$object->someFunction();

答案 1 :(得分:0)

您也可以通过这种方法做同样的事情。

class A{
    const MY_CONSTANT = 'my constant';
    public function __get($key){
        $r = new ReflectionObject($this);
        if($r->hasConstant($key)){ return $r->getConstant($key); }
    }
}

class B{       
    public function someFunction()
    {
       return new A();
    }    
}

$b = new B();
var_dump($b->someFunction()->MY_CONSTANT);

Original Answer Link