PHP 8.1 では、メソッドの戻り値の型の動作が変更されました。以前のバージョンでは、戻り値の型を指定せずにメソッドを定義できました。ただし、PHP 8.1 では、宣言されたメソッドまたはインターフェイスから継承されたメソッドの戻り値の型がデフォルトで要求されるようになりました。この変更の目的は、型の安全性を向上させ、戻り値がインターフェイス コントラクトと一致するようにすることです。
以前に型指定されていなかったメソッドに戻り値の型が追加されると、PHP 8.1 は戻り値の型が宣言された戻り値に準拠しているかどうかをチェックします。タイプ。たとえば、次のように定義されたインターフェイス内のメソッドがある場合:
<code class="php">interface Countable { public function count(): int; }</code>
Countable:
<code class="php">class Example implements Countable { public function count() { return 42; } }</code>
を実装するクラスがある場合、戻り値がは明示的に整数として型指定されていないため、インターフェイス定義と矛盾します。
この問題を解決するには、主に次の 2 つのオプションがあります。
<code class="php">class Example implements Countable { public function count(): int { return 42; } }</code>
<code class="php">class Example implements Countable { #[\ReturnTypeWillChange] public function count() { return 42; } }</code>
PHP 9.0 では戻り値の型を強制するため、#[ReturnTypeWillChange] の使用が不要であることに注意することが重要です。したがって、戻り値の型を明示的に指定し、可能であれば属性の使用を削除するようにコードを段階的に移行することをお勧めします。
以上がPHP 8.1 で戻り値の型の不一致を処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。