PSR-7:php
のHTTPメッセージへの標準化されたアプローチ
PHP Framework Interoperability Group(PHP-FIG)は、PSR-7を使用したHTTPメッセージ処理を標準化しました。この仕様では、HTTPメッセージを表すための7つのインターフェイスを定義し、異なるPHPライブラリとフレームワーク間の相互運用性を促進します。 この構造化されたオブジェクト指向のアプローチは、従来のPHPのグローバル変数への依存とは対照的であり、よりテスト可能で保守可能なコードにつながります。
キーインターフェイス:PSR-7には、、RequestInterface
、ResponseInterface
、ServerRequestInterface
などのインターフェイスが含まれ、それぞれがHTTPメッセージの特定の側面を処理します。
UploadedFileInterface
ライブラリサポート:Symfony、Zend Framework、Slim、Guzzle、Aura、Httplugなど、多くの人気のあるライブラリとフレームワークがPSR-7をサポートしています。 統合は、プロジェクトのニーズに応じて、アダプターを介して、または部分的なものを直接行うことができます。
典型的なHTTP相互作用を調べてみましょう。 ブラウザに
を入力すると、リクエストと応答の間にいくつかのステップが発生します。
サンプルの生リクエストは次のようになります:
bbc.co.uk
)、ヘッダーライン(key:valueペア)、空白行(
)、およびオプションのボディで構成されています。<code>GET / HTTP/1.1 Host: bbc.co.uk User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0) Accept: */* Referer:</code>
を使用して、このリクエストを送信して応答を観察できます。
GET / HTTP/1.1
rn
応答にはリダイレクト(301が永続的に移動しました)が含まれる場合があり、その後に実際のURLへのリクエスト(200 OK)が成功します。
curl
curl -i -H "Host: bbc.co.uk" ... http://bbc.co.uk
MessageInterface
:リクエストと応答の両方のベースインターフェイス。RequestInterface
:HTTPリクエストを表すようにMessageInterface
ResponseInterface
:HTTP応答を表すようにMessageInterface
>ServerRequestInterface
:サーバーからのリクエストの場合、サーバーや環境変数などの詳細を処理します。
RequestInterface
UriInterface
UploadedFileInterface
StreamInterface
課題と設計上の決定:
不変性
:PSR-7オブジェクトは、不変の値オブジェクトとして設計されています。 メッセージを変更すると、新しいインスタンスが作成され、データの整合性が確保されます。 これにより複雑さが増しますが、テスト能力が向上します命名法:メソッドシグネチャで「インターフェイス」接尾辞を使用すると、コードが冗長コードにつながる可能性があります。 エイリアシングは回避策として提案されています
ミドルウェア:PSR-7はメッセージ表現に焦点を当てています。 ミドルウェアの処理(リクエストと応答の間の処理)は、PSR-15で個別に対処されます。
開発者は、いくつかの方法でPSR-7を使用できます
直接実装間接実装(アダプター)
:アダプターを使用して、PSR-7と既存のライブラリを橋渡しします。 部分実装StreamInterface
(よくある質問のセクションは、PSR-7に関する情報を正確に反映しており、擬似原産性のために重要な書き換えを必要としないため、ほとんど変化していません。)以上がHTTPメッセージからPSR-7まで:それは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。