« Override::__construct
ReturnTypeWillChange::__construct »

ReturnTypeWillChange アトリビュート

(PHP 8 >= 8.1.0)

はじめに

PHP 8.1.0 以降、内部クラスのメソッドが戻り値の型を宣言するようになる、 暫定的な移行フェーズが始まりました。

ほとんどの final でない内部メソッドは、 それをオーバーライドする際、 互換性がある戻り値の型を宣言することが必須になっています。 そうしない場合、継承が有効かを検証する際に、 シグネチャが共変性のルールに違反しているという推奨されない警告が発生します。

将来のバージョンの PHP では、メソッドのシグネチャが厳密にチェックされるようになり、 互換性がない場合は致命的なエラーが発生するようになります。

PHP のバージョン間の互換性を保ちたいがために、 オーバーライドするメソッドの戻り値の型を宣言できない場合や、 オーバーライドするメソッドが互換性のない戻り値の型を宣言している場合は、 アトリビュート #[\ReturnTypeWillChange] を追加することで推奨されない警告を抑止できます。

警告

ユーザー定義のクラスで定義されたメソッドをオーバーライドする場合、 戻り値の型は厳密にチェックされます。 オーバーライドするメソッドにこのアトリビュートが指定されていても、 型に互換性がない場合は致命的なエラーが発生します。

ReturnTypeWillChange アトリビュートが推奨されない警告を抑止するのは、 仮の戻り値の型のフェーズの間だけです。 厳密な型チェックが強制されるようになると、このアトリビュートは機能しなくなり、 内部クラスのメソッドをオーバーライドする際にシグネチャの互換性がないと、 致命的なエラーが発生するようになります。

クラス概要

#[\Attribute(\Attribute::TARGET_METHOD)]
final class ReturnTypeWillChange {
/* メソッド */
public function __construct()
}

目次

関連キーワード:
ReturnTypeWillChange   アトリビュート   オーバーライド   互換性   construct   宣言   内部   シグネチャ   推奨   チェック   致命的   フェーズ   final   抑止   概要   Attribute   Override   暫定的   移行   必須   継承   検証   変性   ルール   違反
関連する関数・ページ:
returntypewillchange.construct   reserved.attributes   language.attributes   class.attribute   language.attributes.classes   class.nodiscard