factoryは、PSR-7で定義されている新しいHTTPオブジェクトを作成するものです。factoryは、パッケージによって提供される各オブジェクトタイプに対してこれらのインターフェイスを実装する必要があります。インターフェース次のインターフェイスは、単一のクラス内または個別のクラス内で一緒に実装できます。RequestFactoryInterfaceクライアントリクエストを作成する機能を持ちます。RequestInterface;}ResponseFactoryInterfaceレスポンスを作成する機能を持ちます。ResponseInterface;}ServerRequestFactoryInterfaceサーバーリクエストを作成する機能を持ちます。サーバーパラメーターは指定されたとおりに正確に取得されることに注意してください。指定された値の解析/処理は実行されません。HTTPメソッドまたはURIを決定する試みは行われません。これらは明示的に提供する必要があります。ServerRequestInterface;}StreamFactoryInterfaceリクエストとレスポンスのストリームを作成する機能を持ちます。ストリームは読み取り可能でなければならない。書き込み可能の場合もある。StreamInterface;}このインターフェイスの実装では、文字列からリソースを作成するときに一時的なストリームを使用する必要があります。推奨される方法は次のとおりです。'r+');UploadedFileFactoryInterfaceアップロードされたファイルのストリームを作成する機能を持ちます。UploadedFileInterface;}UriFactoryInterfaceクライアントおよびサーバーリクエストのURIを作成する機能を持ちます。UriInterface;}概要このPSRの目的は、PSR-7オブジェクトを作成するメソッドを定義するFactoryインターフェースを提供することです。理由PSR-7の現在の仕様では、不変のコピーを作成することにより、ほとんどのオブジェクトを変更できます。2つの注目すべき例外があります。StreamInterfaceは、リソースが書き込み可能な場合にのみリソースへの書き込みを許可する、リソースに基づく可変オブジェクトである。UploadedFileInterfaceは、変更機能を提供しないリソースに基づく読み取り専用オブジェクトである。前者は、レスポンスを不完全な状態のままにする可能性があるため、PSR-7ミドルウェアの重大な問題点です。レスポンス本文に添付されたストリームがシーク可能でも書き込み可能でもない場合、本文が既に書き込まれているエラー状態から回復する方法はありません。このシナリオは、新しいストリームを作成するFactoryを提供することで回避できます。Factoryの正式な標準がないため、開発者はこれらのオブジェクトを作成するために特定のベンダーの実装に依存する必要があります。別の問題点は、再利用可能なミドルウェアまたはリクエストハンドラを作成するときです。そのような場合、パッケージの作成者はレスポンスを作成して返す必要があります。個別のインスタンスを作成すると、パッケージが特定のPSR-7実装に結び付けられます。これらのパッケージが代わりにリクエストファクトリインターフェイスに依存している場合、PSR-7実装にとらわれないままにすることができます。Factoryの正式な標準を作成すると、開発者は特定の実装への依存を回避しながら、必要に応じて新しいオブジェクトを作成できます。以下、PSR-17が提供するところ、しないところ。範囲とするところPSR-7互換オブジェクトを作成するメソッドを定義するインターフェースのセットを提供します。範囲としないところPSR-7ファクトリーの特定の実装を提供すること。アプローチ以下、策定に関するアプローチについて選択されたアプローチファクトリメソッド定義は、インスタンス化後にオブジェクトを変更できるかどうかに基づいて選択されています。変更できないインターフェイスの場合、インスタンス化時にすべてのオブジェクトプロパティを定義する必要があります。UriInterfaceの場合、便宜上完全なURIを渡すことができます。使用されるメソッド名は競合しません。これにより、適切な場合に単一のクラスで複数のインターフェイスを実装できます。既存の実装PSR-7の現在の実装はすべて、独自の要件を定義しています。ほとんどの場合、必要なパラメーターは、提案されているファクトリーメソッドと同じかそれよりも厳密ではありません。DiactorosDiactorosは、サーバー使用のための最初のHTTPメッセージ実装の1つであり、PSR-7仕様と並行して開発されました。Request必須パラメーター、メソッド、およびURIのデフォルトはヌルではありません。Response必須パラメーターはありません。ステータスコードのデフォルトは200です。ServerRequest必須パラメーターはありません。グローバルからリクエストを作成するための個別のServerRequestFactoryが含まれています。