このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン | ||
psr:psr17 [2020/07/28 14:14] tanaka |
psr:psr17 [2020/09/01 11:54] (現在) tanaka [PSR-17: HTTP Factories] |
||
---|---|---|---|
行 1: | 行 1: | ||
- | > 編集中 | ||
- | |||
====== PSR-17: HTTP Factories ====== | ====== PSR-17: HTTP Factories ====== | ||
行 24: | 行 22: | ||
* PSR-17: HTTP Factories - HTTPファクトリー | * PSR-17: HTTP Factories - HTTPファクトリー | ||
* [[psr: | * [[psr: | ||
- | * [[psr: | + | * [[psr: |
----- | ----- | ||
====== PSR-17: HTTPファクトリー ====== | ====== PSR-17: HTTPファクトリー ====== | ||
- | >TODO | + | |
+ | --- // 原文より翻訳 [[https:// | ||
+ | |||
+ | このドキュメントでは、PSR-7準拠のHTTPオブジェクトを作成するファクトリーの一般的な規約について説明します。 | ||
+ | |||
+ | PSR-7には、HTTPオブジェクトの作成方法に関する推奨事項が含まれていなかったため、PSR-7の特定の実装に関連付けられていないコンポーネント内に新しいHTTPオブジェクトを作成する必要がある場合に問題が発生します。 | ||
+ | |||
+ | このドキュメントで概説されているインターフェースは、PSR-7オブジェクトをインスタンス化できるメソッドについて説明しています。 | ||
+ | |||
+ | このドキュメントのキーワード '' | ||
+ | |||
+ | > **RFC 2119の説明** | ||
+ | > '' | ||
+ | > '' | ||
+ | > '' | ||
+ | > '' | ||
+ | > '' | ||
+ | |||
+ | \\ | ||
+ | |||
+ | ===== 1. 仕様 ====== | ||
+ | |||
+ | HTTPファクトリーは、PSR-7で定義されている新しいHTTPオブジェクトを作成するためのメソッドです。HTTPファクトリーは、パッケージによって提供されるそれぞれのオブジェクトタイプごとにこれらのインターフェースを実装する必要があります( '' | ||
+ | |||
+ | \\ | ||
+ | |||
+ | ===== 2. インターフェース ====== | ||
+ | |||
+ | 以下のインターフェースは、単一のクラスまたは別々のクラスで一緒に実装される場合があります( '' | ||
+ | |||
+ | \\ | ||
+ | |||
+ | ==== 2.1 RequestFactoryInterface ===== | ||
+ | |||
+ | このインターフェースはクライアント要求を作成する機能があります。 | ||
+ | |||
+ | <code php RequestFactoryInterface.php> | ||
+ | namespace Psr\Http\Message; | ||
+ | |||
+ | use Psr\Http\Message\RequestInterface; | ||
+ | use Psr\Http\Message\UriInterface; | ||
+ | |||
+ | interface RequestFactoryInterface | ||
+ | { | ||
+ | /** | ||
+ | * 新しいリクエストを作成します。 | ||
+ | * | ||
+ | * @param string $method リクエストに関連付けられたHTTPメソッド。 | ||
+ | * @param UriInterface|string $uri リクエストに関連付けられたURI。 | ||
+ | */ | ||
+ | public function createRequest(string $method, $uri): RequestInterface; | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | \\ | ||
+ | |||
+ | ==== 2.2 ResponseFactoryInterface ===== | ||
+ | |||
+ | このインターフェースは応答を作成する機能があります。 | ||
+ | |||
+ | <code php ResponseFactoryInterface.php> | ||
+ | namespace Psr\Http\Message; | ||
+ | |||
+ | use Psr\Http\Message\ResponseInterface; | ||
+ | |||
+ | interface ResponseFactoryInterface | ||
+ | { | ||
+ | /** | ||
+ | * 新しいレスポンスを作成します。 | ||
+ | * | ||
+ | * @param int $code HTTPステータスコード。デフォルトは200です。 | ||
+ | * @param string $reasonPhrase 生成された応答のステータスコードに関連付ける理由フレーズ。 | ||
+ | | ||
+ | */ | ||
+ | public function createResponse(int $code = 200, string $reasonPhrase = '' | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | \\ | ||
+ | |||
+ | ==== 2.3 ServerRequestFactoryInterface ===== | ||
+ | |||
+ | このインターフェースはサーバー要求を作成する機能があります。 | ||
+ | |||
+ | <code php ServerRequestFactoryInterface.php> | ||
+ | namespace Psr\Http\Message; | ||
+ | |||
+ | use Psr\Http\Message\ServerRequestInterface; | ||
+ | use Psr\Http\Message\UriInterface; | ||
+ | |||
+ | interface ServerRequestFactoryInterface | ||
+ | { | ||
+ | /** | ||
+ | * 新しいサーバーリクエストを作成します。 | ||
+ | * | ||
+ | * サーバーパラメータは指定されたとおりに正確に取得されることに注意してください。 | ||
+ | * 指定された値の解析/ | ||
+ | * URIを決定する試みは行われません。 | ||
+ | * | ||
+ | * @param string $method リクエストに関連付けられたHTTPメソッド。 | ||
+ | * @param UriInterface|string $uri リクエストに関連付けられたURI。 | ||
+ | * @param array $serverParams 生成されたリクエストのインスタンスをシードするサーバーAPI(SAPI)パラメーターの配列。 | ||
+ | */ | ||
+ | public function createServerRequest(string $method, $uri, array $serverParams = []): ServerRequestInterface; | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | \\ | ||
+ | |||
+ | ==== 2.4 StreamFactoryInterface ===== | ||
+ | |||
+ | このインターフェースはリクエストとレスポンスのストリームを作成する機能があります。 | ||
+ | |||
+ | <code php StreamFactoryInterface.php> | ||
+ | namespace Psr\Http\Message; | ||
+ | |||
+ | use Psr\Http\Message\StreamInterface; | ||
+ | |||
+ | interface StreamFactoryInterface | ||
+ | { | ||
+ | /** | ||
+ | * 文字列から新しいストリームを作成します。 | ||
+ | * | ||
+ | * ストリームは一時的なリソースで作成する必要があります。 | ||
+ | * | ||
+ | * @param string $content ストリームに入力する文字列コンテンツ。 | ||
+ | */ | ||
+ | public function createStream(string $content = '' | ||
+ | |||
+ | /** | ||
+ | * 既存のファイルからストリームを作成します。 | ||
+ | * | ||
+ | * ファイルは与えられたモードを使って開かれなければなりません。 | ||
+ | * これは `fopen`関数でサポートされているどのモードでもかまいません。 | ||
+ | * | ||
+ | * `$filename`は`fopen()`でサポートされている任意の文字列にすることができます。 | ||
+ | * | ||
+ | * @param string $filename ストリームの基礎として使用するファイル名またはストリームURI。 | ||
+ | * @param string $mode 基本となるファイル名/ | ||
+ | * | ||
+ | * @throws \RuntimeException ファイルを開けない場合。 | ||
+ | * @throws \InvalidArgumentException モードが無効な場合。 | ||
+ | */ | ||
+ | public function createStreamFromFile(string $filename, string $mode = ' | ||
+ | |||
+ | /** | ||
+ | * 既存のリソースから新しいストリームを作成します。 | ||
+ | * | ||
+ | * ストリームは読み取り可能でなければならず、書き込み可能である必要があります。 | ||
+ | * | ||
+ | * @param resource $resource ストリームのベースとして使用するPHPリソース。 | ||
+ | */ | ||
+ | public function createStreamFromResource($resource): | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | このインターフェースの実装では、文字列からリソースを作成するときに一時ストリームを使用すべきです( '' | ||
+ | |||
+ | <code php> | ||
+ | $resource = fopen(' | ||
+ | </ | ||
+ | |||
+ | \\ | ||
+ | |||
+ | ==== 2.5 UploadedFileFactoryInterface ===== | ||
+ | |||
+ | このインターフェースはアップロードされたファイルのストリームを作成する機能があります。 | ||
+ | |||
+ | <code php UploadedFileFactoryInterface.php> | ||
+ | namespace Psr\Http\Message; | ||
+ | |||
+ | use Psr\Http\Message\StreamInterface; | ||
+ | use Psr\Http\Message\UploadedFileInterface; | ||
+ | |||
+ | interface UploadedFileFactoryInterface | ||
+ | { | ||
+ | /** | ||
+ | * 新しいアップロードファイルを作成します。 | ||
+ | * | ||
+ | * サイズが指定されていない場合は、ストリームのサイズを確認することによって決定されます。 | ||
+ | * | ||
+ | * @link http:// | ||
+ | * @link http:// | ||
+ | * | ||
+ | * @param StreamInterface $stream アップロードされたファイルコンテンツを表す基になるストリーム。 | ||
+ | * @param int $size ファイルのサイズ(バイト単位)。 | ||
+ | * @param int $error PHPファイルのアップロードエラー。 | ||
+ | * @param string $clientFilename クライアントが提供するファイル名(存在する場合)。 | ||
+ | * @param string $clientMediaType クライアントが提供するメディアタイプ(存在する場合)。 | ||
+ | * | ||
+ | * @throws \InvalidArgumentException ファイルリソースが読み取り可能でない場合。 | ||
+ | */ | ||
+ | public function createUploadedFile( | ||
+ | StreamInterface $stream, | ||
+ | int $size = null, | ||
+ | int $error = \UPLOAD_ERR_OK, | ||
+ | string $clientFilename = null, | ||
+ | string $clientMediaType = null | ||
+ | ): UploadedFileInterface; | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | \\ | ||
+ | |||
+ | ==== 2.6 UriFactoryInterface ===== | ||
+ | |||
+ | このインターフェースはクライアントとサーバーのリクエストに対するURIを作成する機能があります。 | ||
+ | |||
+ | <code php UriFactoryInterface.php> | ||
+ | namespace Psr\Http\Message; | ||
+ | |||
+ | use Psr\Http\Message\UriInterface; | ||
+ | |||
+ | interface UriFactoryInterface | ||
+ | { | ||
+ | /** | ||
+ | * 新しいURIを作成します。 | ||
+ | * | ||
+ | * @param string $uri 解析するURI。 | ||
+ | * | ||
+ | * @throws \InvalidArgumentException 指定されたURIを解析できない場合。 | ||
+ | */ | ||
+ | public function createUri(string $uri = '' | ||
+ | } | ||
+ | </code> | ||
\\ | \\ | ||