我正在使用一个基本类库,其中父类有一个函数。。。
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 中的父方法兼容