0
假設我有一個簡單的類作爲有條件覆蓋方法在PHP
class Master {
public $variable;
public function a_method() {
// some code here
}
}
和子類覆蓋父方法
class Child extends Master {
public function a_method() {
// some other code
}
}
現在,$child_object = new Child()
實例化Child
類,如果我調用方法$child_object->a_method()
當然重寫的代碼將被執行。如果我有條件地想要調用父方法而不是孩子的方法,則取決於(例如)值$child_object->variable
,但僅在Master::a_method()
內表示條件?簡單來說,我想是這樣
class Master {
public $variable;
public function a_method() {
if ($this->variable) {
// execute the child's method if you are in an inherited scope
} else {
// some code here
}
}
}
我知道,作用於孩子的方法,這將是微不足道的,調用parent::a_method()
條件塊裏面,但我希望孩子的方法是盲目的,以該條件。
這聽起來像是一個非常破碎的抽象。您試圖在父類中創建對子類的依賴關係,這不是一個好主意。 (父類應該沒有關於子類的知識,更不用說依賴它了。)根據你想要解決的問題,我想有一種解決它的模式。也許你希望父/子類型(在這種情況下應該是多態不可區分的)由另一個對象上的工廠提供,條件應該在*那個*對象上? – David
可能的重複[如何從一個繼承的方法中調用PHP父方法?](http://stackoverflow.com/questions/8265351/how-do-i-call-php-parent-methods-from-within-一個繼承的方法) –
在愚蠢的答案應該顯示如何調用一個重寫方法的父副本。 –