Я обновляю довольно большую кодовую базу с 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 7.2 linter на всей базе кода, но он, похоже, не решил эту проблему. Я не смог найти никаких других инструментов, которые могли бы обнаружить это.
Рад исправить все вручную, я просто должен быть уверен, что получаю каждый из них. Если кто-нибудь знает подход к их идентификации, это очень поможет.
Задача ещё не решена.
Других решений пока нет …