아래 시나리오에서 클래스 상수가 상속되는 방식과 인스턴스 변수가 다른 이유를 더 잘 이해하고 싶습니다.
<?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가 평가되고 있음을 보여줍니다.
설명서를 읽었지만이 뉘앙스에 대한 언급이 보이지 않는 것 같습니다. 누구든지 나를 위해 빛을 비출 수 있습니까?
final
...