我正在尝试使用我正在传递给另一个类的类中的常量,但我无法弄清楚如何调用它。任何人都可以指出我出错的地方:
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);
答案 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();
}
}