我正在使用基类库,其中父类具有函数...
function functionName($param) {
}
然后,在扩展这门课程的儿童班中,我有......
function functionName($param, $param2, $param3) {
}
当我使用这个子类进行调用时,我最终得到以下PHP通知......
child_class :: functionName()的声明应与之兼容 parent_class :: functionName()
的那个
代码仍然成功完成,但通知让我担心,我想摆脱它。我发现如果我将附加参数添加到父类的函数版本中,那么问题就会消失。但是,除了扩展类之外,这些参数在任何地方都不是必需的,所以必须添加它似乎很奇怪......不是吗?
有没有更好的方法来解决这个问题,或者我应该确保在此函数的所有实例中添加相同的参数,而不管该特定类是否真的需要它?
有关此的任何信息将不胜感激。谢谢!
答案 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];
}