我想更好地理解为什么在下面的场景中,类常量与实例变量的继承方式有所不同。
<?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 ()方法,因此通过继承使用 ParentClass showTest ()方法。结果显示,由于该方法在 ParentClass 上执行,因此正在计算 TEST 常量的 ParentClass 版本,而由于它通过继承在 ChildClass 上下文中计算,因此正在计算 ChildClass 成员变量 $TEST。
我看过文件了,但似乎没有提到这个细微差别。有人能给我点提示吗?