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

  • このエントリーをはてなブックマークに追加
  • Pocket

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() {}
}

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

WordPress対応 PHPファイル 難読化ツール

ご訪問ありがとうございます。
参考になりましたら『いいね!』もお願いします。

ITの活用情報を毎週お届けする無料メルマガに是非ご登録ください。

閉じる

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

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

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