Aşağıdaki senaryoda, örnek değişkenlere karşı sınıf sabitlerinin miras alınma şekli arasında neden bir fark olduğunu daha iyi anlamak istiyorum.
<?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();
Çıktı:
TWO
TWO
ONE
TWO
Yukarıdaki kodda, ChildClass bir showTest () yöntemine sahip değildir, bu nedenle miras tarafından ParentClass showTest () yöntemi kullanılır. Sonuçlar, yöntem ParentClass üzerinde yürütüldüğünden, TEST sabitinin ParentClass sürümünün değerlendirildiğini, ancak kalıtım yoluyla ChildClass bağlamında değerlendirildiği için ChildClass üye değişkeni $ testinin değerlendirildiğini göstermektedir.
Belgeleri okudum, ancak bu nüanstan bahsedildiğini göremiyorum. Biri benim için biraz ışık tutabilir mi?