この記事は2年以上前の投稿になります。
記載された情報が古くなっている可能性がございますので十分ご注意ください。
記載された情報が古くなっている可能性がございますので十分ご注意ください。
PHP4 からPHP5(正確には5.4) へ移る段階で、旧記述が非推奨に変更されたわけですが、PHP7 からは本格的にE_STRICTエラーが廃止されて、E_NOTICE、E_WARNING、E_DEPRECATED に振り分けられました。
※PHP5の時点でE_STRICTを動作させていれば対応はされているわけですが、error_reporting で対応を先延ばしにしていると引っかかるわけです。
Declaration of %s::%s() should be compatible with that of %s::%s() は Warning に変更されています。
具体的には下記のような記述が問題になります。
class ClassNameA { public function func1( $arg ) {} }
このようなクラスを継承した下記のような定義を行うと発生します。
class ClassNameB extends ClassNameA { public function func1() {} }
このように引数の記述の異なるオーバーライドしようとしてはいけません。
継承クラスと引数も処理内容も異なるのであれば、オーバーライドしないでメソッド名を変更した方が良いかもしれません。