PHP将类传递给另一个类并使用其中的常量

时间:2017-08-22 12:56:17

标签: php

我正在尝试使用我正在传递给另一个类的类中的常量,但我无法弄清楚如何调用它。任何人都可以指出我出错的地方:

Class A {
    const TEST = 1;

}

Class B {
    protected $c;

    function func($c) {
        $this->c = $c;

        echo $this->c::TEST; // this doesn't work
    }
}

$a = new A();
$b = new B();

$b->func($a);

4 个答案:

答案 0 :(得分:3)

在属性上访问实例上的常量只是PHP版本中的语法歧义/不兼容性< 7.你在版本> = 7中正常工作。这适用于所有版本:

function func($c) {
    echo $c::TEST;
}

在PHP< 7,你必须诉诸:

$c = $this->c;
$c::TEST;

答案 1 :(得分:0)

由于TEST是常量,因此您可以静态访问它,例如A::TEST

查看PHP手册:http://php.net/manual/en/language.oop5.constants.php

答案 2 :(得分:0)

这仅适用于php 7。

你在PHP 5中可以做的就是替换你的:

echo $this->c::TEST; 

使用:

echo A::TEST;

或:

echo $c::TEST;

答案 3 :(得分:0)

Class A {
  const TEST = 1;
  function getText()
  {
   return static::TEST;
  }
}

然后使用此函数(注意静态关键字进行继承)

Class B {
    protected $c;

    function func($c) {
        $this->c = $c;

        echo $this->c->getTest();
    }
}