0

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

function functionName($param) {

}

然后,在一个扩展这个类的子类中,我有......

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

}

当我使用这个子类进行调用时,我最终得到以下 PHP 通知......

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

代码仍然成功完成,但通知让我担心,我想摆脱它。我发现如果我将附加参数添加到父类的函数版本中,那么问题就会消失。但是,除了扩展类中的之外,这些参数在任何地方都不是必需的,所以必须添加它似乎很奇怪......不是吗?

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

任何有关这方面的信息将不胜感激。谢谢!

4

2 回答 2

1

您说它在添加其他参数时有效,这是因为在 OOP Method Overriding 中执行以下操作

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

以下链接可能对您有所帮助

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

于 2012-12-11T07:46:08.547 回答
1

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

可以使用func_get_args完成快速解决方法:

function functionName ($param1) { // This is in the derived clas
    $params = func_get_args();
    $param2 = $params[1];
    $param3 = $params[2];
}
于 2012-12-11T07:59:08.623 回答