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