このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン 次のリビジョン 両方とも次のリビジョン | ||
psr:psr17 [2020/08/18 11:06] tanaka [2.4 StreamFactoryInterface] |
psr:psr17 [2020/08/22 08:44] y2sunlight [2.4 StreamFactoryInterface] |
||
---|---|---|---|
行 1: | 行 1: | ||
- | > 編集中 | ||
- | |||
====== PSR-17: HTTP Factories ====== | ====== PSR-17: HTTP Factories ====== | ||
- | --- // | + | --- //[[http://www.y2sunlight.com|y2sunlight]] 2020-07-28// |
本章は、若干の補足を加筆してはいるものの単に[[https:// | 本章は、若干の補足を加筆してはいるものの単に[[https:// | ||
行 31: | 行 29: | ||
--- // 原文より翻訳 [[https:// | --- // 原文より翻訳 [[https:// | ||
- | |||
- | This document describes a common standard for factories that create PSR-7 compliant HTTP objects. | ||
このドキュメントでは、PSR-7準拠のHTTPオブジェクトを作成するファクトリーの一般的な規約について説明します。 | このドキュメントでは、PSR-7準拠のHTTPオブジェクトを作成するファクトリーの一般的な規約について説明します。 | ||
- | |||
- | PSR-7 did not include a recommendation on how to create HTTP objects, which leads to difficulties when needing to create new HTTP objects within components that are not tied to a specific implementation of PSR-7. | ||
PSR-7には、HTTPオブジェクトの作成方法に関する推奨事項が含まれていなかったため、PSR-7の特定の実装に関連付けられていないコンポーネント内に新しいHTTPオブジェクトを作成する必要がある場合に問題が発生します。 | PSR-7には、HTTPオブジェクトの作成方法に関する推奨事項が含まれていなかったため、PSR-7の特定の実装に関連付けられていないコンポーネント内に新しいHTTPオブジェクトを作成する必要がある場合に問題が発生します。 | ||
- | |||
- | The interfaces outlined in this document describe methods by which PSR-7 objects can be instantiated. | ||
このドキュメントで概説されているインターフェースは、PSR-7オブジェクトをインスタンス化できるメソッドについて説明しています。 | このドキュメントで概説されているインターフェースは、PSR-7オブジェクトをインスタンス化できるメソッドについて説明しています。 | ||
- | |||
- | The key words “MUST”, “MUST NOT”, “REQUIRED”, | ||
このドキュメントのキーワード '' | このドキュメントのキーワード '' | ||
行 58: | 行 48: | ||
===== 1. 仕様 ====== | ===== 1. 仕様 ====== | ||
- | |||
- | An HTTP factory is a method by which a new HTTP object, as defined by PSR-7, is created. HTTP factories MUST implement these interfaces for each object type that is provided by the package. | ||
HTTPファクトリーは、PSR-7で定義されている新しいHTTPオブジェクトを作成するためのメソッドです。HTTPファクトリーは、パッケージによって提供されるそれぞれのオブジェクトタイプごとにこれらのインターフェースを実装する必要があります( '' | HTTPファクトリーは、PSR-7で定義されている新しいHTTPオブジェクトを作成するためのメソッドです。HTTPファクトリーは、パッケージによって提供されるそれぞれのオブジェクトタイプごとにこれらのインターフェースを実装する必要があります( '' | ||
行 66: | 行 54: | ||
===== 2. インターフェース ====== | ===== 2. インターフェース ====== | ||
- | |||
- | The following interfaces MAY be implemented together within a single class or in separate classes. | ||
以下のインターフェースは、単一のクラスまたは別々のクラスで一緒に実装される場合があります( '' | 以下のインターフェースは、単一のクラスまたは別々のクラスで一緒に実装される場合があります( '' | ||
行 74: | 行 60: | ||
==== 2.1 RequestFactoryInterface ===== | ==== 2.1 RequestFactoryInterface ===== | ||
- | |||
- | Has the ability to create client requests. | ||
このインターフェースはクライアント要求を作成する機能があります。 | このインターフェースはクライアント要求を作成する機能があります。 | ||
行 88: | 行 72: | ||
{ | { | ||
/** | /** | ||
- | * Create a new request. | ||
* 新しいリクエストを作成します。 | * 新しいリクエストを作成します。 | ||
* | * | ||
- | * @param string $method | + | * @param string $method リクエストに関連付けられたHTTPメソッド。 |
- | | + | * @param UriInterface|string $uri リクエストに関連付けられたURI。 |
- | * @param UriInterface|string $uri The URI associated with the request. | + | |
- | | + | |
*/ | */ | ||
public function createRequest(string $method, $uri): RequestInterface; | public function createRequest(string $method, $uri): RequestInterface; | ||
行 103: | 行 84: | ||
==== 2.2 ResponseFactoryInterface ===== | ==== 2.2 ResponseFactoryInterface ===== | ||
- | |||
- | Has the ability to create responses. | ||
このインターフェースは応答を作成する機能があります。 | このインターフェースは応答を作成する機能があります。 | ||
行 116: | 行 95: | ||
{ | { | ||
/** | /** | ||
- | * Create a new response. | ||
* 新しいレスポンスを作成します。 | * 新しいレスポンスを作成します。 | ||
- | |||
* | * | ||
- | * @param int $code The HTTP status code. Defaults to 200. | + | * @param int $code HTTPステータスコード。デフォルトは200です。 |
- | | + | * @param string $reasonPhrase 生成された応答のステータスコードに関連付ける理由フレーズ。 |
- | * @param string $reasonPhrase | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
*/ | */ | ||
public function createResponse(int $code = 200, string $reasonPhrase = '' | public function createResponse(int $code = 200, string $reasonPhrase = '' | ||
行 135: | 行 108: | ||
==== 2.3 ServerRequestFactoryInterface ===== | ==== 2.3 ServerRequestFactoryInterface ===== | ||
- | |||
- | Has the ability to create server requests. | ||
このインターフェースはサーバー要求を作成する機能があります。 | このインターフェースはサーバー要求を作成する機能があります。 | ||
行 149: | 行 120: | ||
{ | { | ||
/** | /** | ||
- | * Create a new server request. | ||
* 新しいサーバーリクエストを作成します。 | * 新しいサーバーリクエストを作成します。 | ||
* | * | ||
- | * Note that server parameters are taken precisely as given - no parsing/ | ||
- | * of the given values is performed. In particular, no attempt is made to | ||
- | * determine the HTTP method or URI, which must be provided explicitly. | ||
* サーバーパラメータは指定されたとおりに正確に取得されることに注意してください。 | * サーバーパラメータは指定されたとおりに正確に取得されることに注意してください。 | ||
* 指定された値の解析/ | * 指定された値の解析/ | ||
* URIを決定する試みは行われません。 | * URIを決定する試みは行われません。 | ||
* | * | ||
- | * @param string $method | + | * @param string $method リクエストに関連付けられたHTTPメソッド。 |
- | | + | * @param UriInterface|string $uri リクエストに関連付けられたURI。 |
- | * @param UriInterface|string $uri The URI associated with the request. | + | * @param array $serverParams 生成されたリクエストのインスタンスをシードするサーバーAPI(SAPI)パラメーターの配列。 |
- | | + | |
- | * @param array $serverParams | + | |
- | | + | |
- | | + | |
*/ | */ | ||
public function createServerRequest(string $method, $uri, array $serverParams = []): ServerRequestInterface; | public function createServerRequest(string $method, $uri, array $serverParams = []): ServerRequestInterface; | ||
行 174: | 行 137: | ||
==== 2.4 StreamFactoryInterface ===== | ==== 2.4 StreamFactoryInterface ===== | ||
- | |||
- | Has the ability to create streams for requests and responses. | ||
このインターフェースはリクエストとレスポンスのストリームを作成する機能があります。 | このインターフェースはリクエストとレスポンスのストリームを作成する機能があります。 | ||
行 187: | 行 148: | ||
{ | { | ||
/** | /** | ||
- | * Create a new stream from a string. | ||
* 文字列から新しいストリームを作成します。 | * 文字列から新しいストリームを作成します。 | ||
* | * | ||
- | * The stream SHOULD be created with a temporary resource. | ||
* ストリームは一時的なリソースで作成する必要があります。 | * ストリームは一時的なリソースで作成する必要があります。 | ||
* | * | ||
- | * @param string $content | + | * @param string $content ストリームに入力する文字列コンテンツ。 |
- | | + | |
*/ | */ | ||
public function createStream(string $content = '' | public function createStream(string $content = '' | ||
/** | /** | ||
- | * Create a stream from an existing file. | ||
* 既存のファイルからストリームを作成します。 | * 既存のファイルからストリームを作成します。 | ||
* | * | ||
- | * The file MUST be opened using the given mode, which may be any mode | ||
- | * supported by the `fopen` function. | ||
* ファイルは与えられたモードを使って開かれなければなりません。 | * ファイルは与えられたモードを使って開かれなければなりません。 | ||
* これは `fopen`関数でサポートされているどのモードでもかまいません。 | * これは `fopen`関数でサポートされているどのモードでもかまいません。 | ||
* | * | ||
- | * The `$filename` MAY be any string supported by `fopen()`. | ||
* `$filename`は`fopen()`でサポートされている任意の文字列にすることができます。 | * `$filename`は`fopen()`でサポートされている任意の文字列にすることができます。 | ||
* | * | ||
- | * @param string $filename | + | * @param string $filename ストリームの基礎として使用するファイル名またはストリームURI。 |
- | | + | * @param string $mode 基本となるファイル名/ |
- | * @param string $mode The mode with which to open the underlying filename/ | + | |
- | | + | |
* | * | ||
- | * @throws \RuntimeException | + | * @throws \RuntimeException ファイルを開けない場合。 |
- | | + | * @throws \InvalidArgumentException モードが無効な場合。 |
- | * @throws \InvalidArgumentException | + | |
- | | + | |
*/ | */ | ||
public function createStreamFromFile(string $filename, string $mode = ' | public function createStreamFromFile(string $filename, string $mode = ' | ||
/** | /** | ||
- | * Create a new stream from an existing resource. | ||
* 既存のリソースから新しいストリームを作成します。 | * 既存のリソースから新しいストリームを作成します。 | ||
* | * | ||
- | * The stream MUST be readable and may be writable. | ||
* ストリームは読み取り可能でなければならず、書き込み可能である必要があります(MUST)。 | * ストリームは読み取り可能でなければならず、書き込み可能である必要があります(MUST)。 | ||
* | * | ||
- | * @param resource $resource | + | * @param resource $resource ストリームのベースとして使用するPHPリソース。 |
- | | + | |
*/ | */ | ||
public function createStreamFromResource($resource): | public function createStreamFromResource($resource): | ||
} | } | ||
</ | </ | ||
- | |||
- | Implementations of this interface SHOULD use a temporary stream when creating resources from strings. The RECOMMENDED method for doing so is: | ||
このインターフェースの実装では、文字列からリソースを作成するときに一時ストリームを使用すべきです( '' | このインターフェースの実装では、文字列からリソースを作成するときに一時ストリームを使用すべきです( '' | ||
行 247: | 行 192: | ||
==== 2.5 UploadedFileFactoryInterface ===== | ==== 2.5 UploadedFileFactoryInterface ===== | ||
+ | |||
+ | このインターフェースはアップロードされたファイルのストリームを作成する機能があります。 | ||
<code php UploadedFileFactoryInterface.php> | <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; | ||
+ | } | ||
</ | </ | ||
行 254: | 行 232: | ||
==== 2.6 UriFactoryInterface ===== | ==== 2.6 UriFactoryInterface ===== | ||
+ | |||
+ | このインターフェースはクライアントとサーバーのリクエストに対するURIを作成する機能があります。 | ||
<code php UriFactoryInterface.php> | <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 = '' | ||
+ | } | ||
</ | </ | ||
\\ | \\ | ||