访问 PHP 中注入类的常量


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?有人知道其他方法吗?

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

在此处尝试此代码片段

<?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();

您也可以通过这种方法执行相同的操作。

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

原始答案链接

最新更新