我正在将一个相当大的代码库从 PHP 5.6 升级到 PHP 7.2。
代码中有数千处扩展类包含具有不同数量的父方法参数的方法。例如:
class SomeBaseClass {
function someMethod($arg1, $arg2, $arg3) {
...
}
}
class SomeOtherClass extends SomeBaseClass {
function someMethod($arg1) {
//Doesn't care about the other args, so doesn't specify them as params
}
}
这会在 PHP 7.2 中导致致命错误。
修复显然是为每个参数添加默认值。
例如:
class SomeOtherClass extends SomeBaseClass {
function someMethod($arg1, $arg2=null, $arg3=null) {
...
}
}
但这要求我知道所有出现这种情况的地方。
我正在尝试找到一种方法:
- 放宽错误检查,以便 PHP 在遇到此错误时不会抛出致命错误。
或者
- 建立某种列表,准确显示哪些函数违反了此规则。
我在整个代码库上运行了一个 php 7.2 linter,但它似乎没有解决这个问题。我找不到任何其他可以检测到这一点的工具。
很高兴手动修复它们,我只需要确保我得到了它们中的每一个。如果有人知道一种识别它们的方法,那将有很大的帮助。