かなり大きなコードベースを 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 リンターを実行しましたが、この問題は解決していないようです。これを検出する他のツールを見つけることができませんでした。
それらをすべて手動で修正できてうれしいです。それらのすべてを取得していることを確認する必要があります。それらすべてを特定する方法を誰かが知っていれば、それは大きな助けになるでしょう。