ホームページ > バックエンド開発 > PHPチュートリアル > PHP で戻り値の型の非推奨通知を処理するにはどうすればよいですか?

PHP で戻り値の型の非推奨通知を処理するにはどうすればよいですか?

Linda Hamilton
リリース: 2024-11-01 03:38:27
オリジナル
558 人が閲覧しました

How Should I Handle Return Type Deprecation Notices in PHP?

参考: ... の戻り値の型は ... と互換性があるか、#[ReturnTypeWillChange] 属性を使用する必要があります

背景: 戻り値の型とcovariance

PHP 7.0 以降、関数とメソッドの戻り値の型が利用可能になりました。これにより、他のコードが依存できるコントラクトが形成されます。

例:

<code class="php">class Base {
    public function getList(): Iterator {
       // ...
    }
}

// Calling code:
$foo = new Base();
var_dump($foo instanceOf Base); // true
var_dump($foo->getList() instanceOf Iterator); // true</code>
ログイン後にコピー

クラスを拡張する場合、より具体的な戻り値の型を定義できます (共分散)。ただし、別の戻り値の型を指定したり、戻り値の型を指定したりすることはできません。

下位互換性と非推奨

既存のクラスまたはインターフェイスに戻り値の型を追加するには、クラスの拡張または実装の変更が必要です。 PHP 8.0 での Union Type の導入により、戻り値の型は文書化されましたが、エラーとして強制されませんでした。代わりに、非推奨の通知が追加されました。

#[ReturnTypeWillChange] 属性

複数の PHP バージョンと 8.0 より前の戻り値の型をサポートする必要がある競合するコードにより、#[ReturnTypeWillChange] 属性が開発されました。 ] 属性。メソッドに追加すると、PHP 8.1 での非推奨の通知が抑制されます。これにより、内部戻り値の型が強制される可能性がある PHP 9.0 より前に問題を修正する時間ができます。

解決策

  1. 減価償却通知からメソッドと正しい戻り値の型を特定します。
  2. アクションの方針を決定します。

    • ライブラリまたは拡張機能の更新を待ちます (アクションは必要ありません)。
    • クラスが既に正しい型を返しているかどうかを確認します。
    • 戻り値の型を変更することがアプリケーションと拡張クラスにとって安全かどうかを判断します。
  3. 戻り値の型を変更しても安全かどうか:

    • 戻り値の型を追加します。
  4. 古い PHP バージョンまたは更新されていないコードをサポートする必要がある場合:

    • # を追加します[ReturnTypeWillChange] 属性を一時的に指定します。

以上がPHP で戻り値の型の非推奨通知を処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート