【当ブログではアフィリエイト広告を利用しています】

[PHP] Warning: Declaration of Class::func() should be compatible with Class::func($para) in /prog.php on line

attention この記事は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() {}
}

このように引数の記述の異なるオーバーライドしようとしてはいけません。
継承クラスと引数も処理内容も異なるのであれば、オーバーライドしないでメソッド名を変更した方が良いかもしれません。

ご意見・ご感想をお待ちしております。

いただいた情報は一般公開されません。(入力いただいたメールアドレスにてご返信させていただきます)
また、* が付いている欄は必須項目となりますので、必ずご記入をお願いします。

内容に問題なければ、下記の「コメントを送信する」ボタンを押してください。