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

时间:2012-12-11 07:29:04

标签: php class declaration overloading

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

function functionName($param) {

}

然后,在扩展这门课程的儿童班中,我有......

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

}

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

  

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

的那个

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

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

有关此的任何信息将不胜感激。谢谢!

2 个答案:

答案 0 :(得分:1)

你说当你添加额外的参数时它会起作用,因为在OOP中方法覆盖执行以下操作

“子类中的实现通过提供与父类”

中的方法具有相同名称,相同参数或签名以及相同返回类型的方法来覆盖(替换)超类中的实现。

以下链接可能会帮助您

Declaration of Methods should be Compatible with Parent Methods in PHP

答案 1 :(得分:1)

如果你继承了一个类,你需要拥有完全相同的签名。

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

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