我有兩個類,如下所示:OOP兼容性錯誤
<?php
abstract class A {
public function update(array $one, array $two) {
echo $one;
echo $two;
}
}
?>
則B繼承了A類:
<?php
include ("A.php");
class B extends A {
public function update(array $one) {
$two = array(
"foo" => "bar",
"bar" => "foo",
);
parent::update($one, $two);
}
}
?>
當我嘗試編譯B,我得到以下錯誤:
Declaration of B::update(array $one) should be compatible with A::update(array $one, array $two) in B.php on line 3
很明顯,B :: update存在問題。我正在給A :: update兩個數組。但不知何故,我失去了一些東西。 我試圖在構造函數中進行初始化。我也嘗試手動添加第二個數組到A :: update(parent :: update),但我似乎得到相同的錯誤。 有沒有人有一個想法,爲什麼我得到這個問題?我的PHP版本:v7.0.18提前
您將'A()'定義爲需要抽象類中的兩個參數,然後嘗試定義它在您的類中具有兩個繼承自它的參數。你不能那樣做。 –
但是由於簽名不一樣,我不清楚自己是否試圖覆蓋它本身?令人煩惱的是,這個確切的代碼之前已經有效。但是,因爲我跳到我現在的PHP版本,我得到這個錯誤。 –
錯誤一直存在,您剛剛在以前的PHP配置中將其壓制。而PHP只能通過名字來識別功能;您沒有兩種方法可以覆蓋該方法。 – deceze