我想更好地理解为什么,在下面的场景中,在类中的常量继承与实例变量的方式不同。
<?php
class ParentClass {
const TEST = "ONE";
protected $test = "ONE";
public function showTest(){
echo self::TEST;
echo $this->test;
}
}
class ChildClass extends ParentClass {
const TEST = "TWO";
protected $test = "TWO";
public function myTest(){
echo self::TEST;
echo $this->test;
}
}
$child = new ChildClass();
$child->myTest();
$child->showTest();
输出:
TWO
TWO
ONE
TWO
在上面的代码,ChildClass不具有showTest()方法,所以在父类showTest()方法用于通过继承。 结果表明,由于该方法是在父类执行时,TEST恒定的父类版本正被评估的,而因为它通过继承ChildClass上下文中评估,所述ChildClass成员变量$测试被评价。
我读过的文件,但似乎无法看到这种细微的任何提及。 任何人都可以提供一些线索给我吗?