0
我有這樣繼承的方法,而不從父要求參數
class Parent {
public function add($query = "", $queryParams = []) {
if(empty($query)) {
$query = "blablabla";
}
if(empty($params)) {
$params = [blablabla];
}
//... some logic;
//return something;
}
}
一類,我想有一個子類這樣
class Child extends Parent {
public function add() {
$query = "blablabla";
$params = [blablabla];
return parent::add($query, $params);
}
}
但它始終引發我一個錯誤說子類方法必須是「兼容的」,這意味着我必須聲明相同的參數。
我在想的東西像父聲明一個函數是這樣的:
public function __add($query = "", $params = []) {}
,並在子類中聲明是這樣的功能:
public function add() {
$query = "blabla"; $params = [blabla];
return parent::__add($query, $params);
}
的一個問題是,我仍然需要使用一些Parent類對象和方法add(),我並不總是隻使用繼承的類對象。
任何想法?
你同意一個好的方法是聲明一個方法__doSomething($ params = []){}並在一個可能被稱爲doSomething()的子函數中調用它?就像我在問題 – JuanBonnett 2014-08-31 01:07:13
@JuanBonnett中提到的:這取決於你。主要的是,如果參數不同,方法應該有不同的名稱。 – georg 2014-08-31 01:09:56
謝謝,並感謝你的替代原則文章,非常有建設性! – JuanBonnett 2014-08-31 01:11:00