Метод количественного определения расширенных методов PHP7, которые имеют разное количество аргументов для родительского - PullRequest
0 голосов
/ 26 апреля 2018

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

Рад исправить все вручную, я просто должен быть уверен, что получаю каждый из них.Если кто-нибудь знает, как их идентифицировать, это очень поможет.

...