我有两个类,如下所示: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