如何修复PHP中的类/函数声明问题



我正在使用一个基本类库,其中父类有一个函数。。。

function functionName($param) {
}

然后,在一个扩展这个类的儿童类中,我。。。

function functionName($param, $param2, $param3) {
}

当我使用这个子类进行调用时,我会收到以下PHP通知。。。

child_class::functionName()的声明应该与parent_class::functionName()

代码仍然成功完成,但通知让我担心,我想把它去掉。我发现,如果我把额外的参数添加到父类的函数版本中,那么问题就会消失。不过,除了扩展类中的之外,这些参数在任何地方都是不必要的,所以必须添加。。。不是吗?

有没有更好的方法来解决这样的问题,或者我应该确保在该函数的所有实例中添加相同的参数,而不管该特定类是否真的需要它?

如能提供有关这方面的任何信息,我们将不胜感激。谢谢

如果继承一个类,则需要具有完全相同的签名。

使用func_get_args:可以快速解决问题

function functionName ($param1) { // This is in the derived clas
$params = func_get_args();
$param2 = $params[1];
$param3 = $params[2];
}

您说当您添加额外的参数时它有效,这是因为在OOP方法重写中执行以下

"子类中的实现通过提供一个与父类中的方法具有相同名称、相同参数或签名以及相同返回类型的方法来覆盖(替换)超类中的实施">

以下链接可能会帮助您

方法声明应与PHP 中的父方法兼容

最新更新