關於PHP this 和 self 呼叫類方法的區別

i金少發表於2024-12-06

看以下程式碼

class ParentClass {
    public function parentMethod() {
        print_r(get_class($this)); //輸出 ChildClass
        $this->get();  //這時候的this 是 ChildClass的物件 輸出:子類的方法被呼叫
    }
    public function get(){
        echo "父類的方法被呼叫";
    }
}

class ChildClass extends ParentClass {
    public function get() {
        echo "子類的方法被呼叫";
    }
}

$child = new ChildClass();
$child->parentMethod(); // 輸出:子類的方法被呼叫

輸入在父類中透過this呼叫 get方法,但是因為當初例項化的是ChildClass,所以在父類方法的$this指向的是ChildClass 而不是ParentClass 。父類在被繼承後依然希望調自己的get方法應該

self::get();

相關文章