php7系→php8.1にするとエラー A PHP Error was encountered … or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice

php8.1 returntypewillchangeエラー php

PHP8系を使おうと思い、Dockerでphp8.1環境入れて既存プロジェクトを走らせようとすると出てきました。下記のようなエラー。継承関数の返り値が基底クラスの関数と違うので、合わせるか、#[\ReturnTypeWillChange]を一時的なエラー抑制として使うかしてください。とのこと。

A PHP Error was encountered
Severity: 8192

Message: Return type of [function] should either be compatible with [base function]: bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice

スポンサーリンク

関数の上行に#[\ReturnTypeWillChange]を追加する

エラー行の上に追加するだけです。近い将来phpバージョンが上がるとこれもダメにるかもしれないので、それまでに基底クラスに合わせるか対策を今のうちにしておきましょう。

#[\ReturnTypeWillChange]
public function xxxx() {
...
}

参考

このサイトに詳しく書いてあります。

ReturnTypeWillChange属性の指定 - ビットハイブ
PHPの古いバージョンで作成されたシステムの7系だったり8系への対応を頼まれることがよくあります。現時点で最新版はPHP8.1なのでシステムの更新を行う場合は、7.4~8.1までの対応作業を行うことが多くなりますが、対応作業を行っていると以下のメッセージが出力されることがあります。

コメント

タイトルとURLをコピーしました