我有兩個班家長和孩子:PHP重載父類的方法是不直接調用
class Post
{
public function save()
{
$this->update_data();
$this->custom_updates();
$this->load();
}
protected function custom_updates() { /* empty */ }
}
class Event extends Post
{
protected function custom_updates()
{
//perform custom updates specific for Event objects
}
}
$Event = new Event();
$Event->save();
當我執行上面的代碼的方法custom_updates()將由原來的郵政類被稱爲
,不是孩子事件類。有沒有什麼聰明的方法來覆蓋父方法,所以它會被對象使用?或者,唯一的選擇是修改被調用的方法,在這個例子中保存()
class Event extends Post
{
public function save()
{
$this->update_data();
$this->custom_updates();
$this->load();
}
protected function custom_updates()
{
//perform custom updates specific for Event objects
}
}
*「當我執行上面的代碼時,方法'custom_updates()'將從原始Post類調用,而不是子類Event類。」 - 這是不正確的。調用'$ this'的類中的'custom_updates()'方法。檢查出來:https://3v4l.org/SFaLU這是繼承在PHP中的工作原理。 – axiac
您發佈的代碼覆蓋父方法。這基本是一個基本的操作原則。請再次檢查。 –
被調用的方法將是壓倒一切的子方法 - [Demo](https://3v4l.org/leZ3X) –