(PHP 8 >= 8.1.0)
ほとんどの final でない内部メソッドは、
それをオーバライドする際、
互換性がある戻り値の型を宣言することが必須になっています。
そうしない場合、継承が有効かを検証する際に、
推奨されない警告が発生します。
これは、暫定的な戻り値の型のフェーズを導入するものです。
つまり、戻り値の型に互換性がない場合、将来のバージョンでそれが強制されるまでは、
エンジンは致命的なエラーではなく、推奨されない警告を発生させます。
PHP のバージョン間の互換性を保ちたいがために、
戻り値の型を宣言できない場合、
アトリビュート #[\ReturnTypeWillChange]
を追加することで警告を抑止できます。
ReturnTypeWillChange アトリビュートが推奨されない警告を抑止するのは、 暫定的な戻り値の型のフェーズの間だけです。 ユーザー定義のクラスで定義されたメソッドをオーバーライドする場合には、何の効果もありません。 内部メソッドが strict な型を採用すると、 オーバーライドするメソッドのシグネチャの不一致は致命的なエラーを引き起こすようになり、 このアトリビュートは何の効果も持たなくなります。