Chciałbym lepiej zrozumieć, dlaczego w poniższym scenariuszu istnieje różnica w sposobie dziedziczenia stałych klas w porównaniu ze zmiennymi instancji.
<?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();
Wynik:
TWO
TWO
ONE
TWO
W powyższym kodzie ChildClass nie ma metody showTest (), więc metoda ParentClass showTest () jest używana przez dziedziczenie. Wyniki pokazują, że ponieważ metoda jest wykonywana na ParentClass, oceniana jest wersja ParentClass stałej TEST, natomiast ponieważ jest ona oceniana w kontekście ChildClass poprzez dziedziczenie, oceniana jest zmienna składowa ChildClass $ test.
Przeczytałem dokumentację, ale nie widzę żadnej wzmianki o tym niuansie. Czy ktoś może rzucić dla mnie trochę światła?
final
...