Ground Sunlight

Windowsで作る - PHPプログラミングの開発環境

ユーザ用ツール

サイト用ツール


psr:psr17

差分

このページの2つのバージョン間の差分を表示します。

この比較画面にリンクする

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
psr:psr17 [2020/08/18 10:49]
tanaka [1. 仕様]
psr:psr17 [2020/09/01 11:54] (現在)
tanaka [PSR-17: HTTP Factories]
行 1: 行 1:
-> 編集中 
- 
 ====== PSR-17: HTTP Factories ====== ====== PSR-17: HTTP Factories ======
  
- --- //[[http://y2sunlight.com|y2sunlight]] 2020-07-28//+ --- //[[http://www.y2sunlight.com|y2sunlight]] 2020-07-28//
  
 本章は、若干の補足を加筆してはいるものの単に[[https://www.php-fig.org/psr/|PSRのサイト]]を日本語に翻訳したものに過ぎません。英語が堪能な方は原文をご参照下さい。翻訳に当たっては、基本的に機械翻訳を使い、理解できない部分は独断で意訳しております。拙い訳では御座いますが恥を忍んで投稿しておりますので、ご指摘など御座いましたらコメントを頂ければ幸いです。 本章は、若干の補足を加筆してはいるものの単に[[https://www.php-fig.org/psr/|PSRのサイト]]を日本語に翻訳したものに過ぎません。英語が堪能な方は原文をご参照下さい。翻訳に当たっては、基本的に機械翻訳を使い、理解できない部分は独断で意訳しております。拙い訳では御座いますが恥を忍んで投稿しておりますので、ご指摘など御座いましたらコメントを頂ければ幸いです。
行 24: 行 22:
   * PSR-17: HTTP Factories - HTTPファクトリー   * PSR-17: HTTP Factories - HTTPファクトリー
   * [[psr:psr18|PSR-18: HTTP Client - HTTPクライアント]]    * [[psr:psr18|PSR-18: HTTP Client - HTTPクライアント]] 
-  * [[psr:psr19|PSR-19: PHPDoc tags - PHPDocタグ]] +  * [[psr:psr19|PSR-19: PHPDoc tags(Draft) - PHPDocタグ]] 
  
 ----- -----
行 31: 行 29:
  
  --- // 原文より翻訳 [[https://www.php-fig.org/psr/psr-17/|PSR-17: HTTP HTTP Factories]] 2020-08-17 現在 //  --- // 原文より翻訳 [[https://www.php-fig.org/psr/psr-17/|PSR-17: HTTP HTTP Factories]] 2020-08-17 現在 //
- 
-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”, “SHALL”, “SHALL NOT”, “SHOULD”, “SHOULD NOT”, “RECOMMENDED”, “MAY”, and “OPTIONAL” in this document are to be interpreted as described in RFC 2119. 
  
 このドキュメントのキーワード ''MUST'' , ''MUST NOT'' , ''REQUIRED'' , ''SHALL'' , ''SHALL NOT'' , ''SHOULD'' , ''SHOULD NOT'' , ''RECOMMENDED'' , ''MAY'' 及び ''OPTIONAL'' は、 [[https://www.ietf.org/rfc/rfc2119.txt|RFC 2119]]で説明されているように解釈して下さい。 このドキュメントのキーワード ''MUST'' , ''MUST NOT'' , ''REQUIRED'' , ''SHALL'' , ''SHALL NOT'' , ''SHOULD'' , ''SHOULD NOT'' , ''RECOMMENDED'' , ''MAY'' 及び ''OPTIONAL'' は、 [[https://www.ietf.org/rfc/rfc2119.txt|RFC 2119]]で説明されているように解釈して下さい。
行 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ファクトリーは、パッケージによって提供されるそれぞれのオブジェクトタイプごとにこれらのインターフェースを実装する必要があります( ''MUST'' )。 HTTPファクトリーは、PSR-7で定義されている新しいHTTPオブジェクトを作成するためのメソッドです。HTTPファクトリーは、パッケージによって提供されるそれぞれのオブジェクトタイプごとにこれらのインターフェースを実装する必要があります( ''MUST'' )。
行 66: 行 54:
  
 ===== 2. インターフェース ====== ===== 2. インターフェース ======
 +
 +以下のインターフェースは、単一のクラスまたは別々のクラスで一緒に実装される場合があります( ''MAY'' )。
  
 \\ \\
  
 ==== 2.1 RequestFactoryInterface ===== ==== 2.1 RequestFactoryInterface =====
 +
 +このインターフェースはクライアント要求を作成する機能があります。
  
 <code php RequestFactoryInterface.php> <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;
 +}
 </code> </code>
  
行 77: 行 84:
  
 ==== 2.2 ResponseFactoryInterface ===== ==== 2.2 ResponseFactoryInterface =====
 +
 +このインターフェースは応答を作成する機能があります。
  
 <code php ResponseFactoryInterface.php> <code php ResponseFactoryInterface.php>
 +namespace Psr\Http\Message;
 +
 +use Psr\Http\Message\ResponseInterface;
 +
 +interface ResponseFactoryInterface
 +{
 +    /**
 +     * 新しいレスポンスを作成します。
 +     *
 +     * @param int $code HTTPステータスコード。デフォルトは200です。
 +     * @param string $reasonPhrase 生成された応答のステータスコードに関連付ける理由フレーズ。
 +            何も提供されていない場合、実装はHTTP仕様で提案されているデフォルトを使用できます。
 +     */
 +    public function createResponse(int $code = 200, string $reasonPhrase = ''): ResponseInterface;
 +}
 </code> </code>
  
行 84: 行 108:
  
 ==== 2.3 ServerRequestFactoryInterface ===== ==== 2.3 ServerRequestFactoryInterface =====
 +
 +このインターフェースはサーバー要求を作成する機能があります。
  
 <code php ServerRequestFactoryInterface.php> <code php ServerRequestFactoryInterface.php>
 +namespace Psr\Http\Message;
 +
 +use Psr\Http\Message\ServerRequestInterface;
 +use Psr\Http\Message\UriInterface;
 +
 +interface ServerRequestFactoryInterface
 +{
 +    /**
 +     * 新しいサーバーリクエストを作成します。
 +     *
 +     * サーバーパラメータは指定されたとおりに正確に取得されることに注意してください。
 +     * 指定された値の解析/処理は実行されません。特に、明示的に指定する必要があるHTTPメソッドまたは
 +     * URIを決定する試みは行われません。
 +     *
 +     * @param string $method リクエストに関連付けられたHTTPメソッド。
 +     * @param UriInterface|string $uri リクエストに関連付けられたURI。
 +     * @param array $serverParams 生成されたリクエストのインスタンスをシードするサーバーAPI(SAPI)パラメーターの配列。
 +     */
 +    public function createServerRequest(string $method, $uri, array $serverParams = []): ServerRequestInterface;
 +}
 </code> </code>
  
行 91: 行 137:
  
 ==== 2.4 StreamFactoryInterface ===== ==== 2.4 StreamFactoryInterface =====
 +
 +このインターフェースはリクエストとレスポンスのストリームを作成する機能があります。
  
 <code php StreamFactoryInterface.php> <code php StreamFactoryInterface.php>
 +namespace Psr\Http\Message;
 +
 +use Psr\Http\Message\StreamInterface;
 +
 +interface StreamFactoryInterface
 +{
 +    /**
 +     * 文字列から新しいストリームを作成します。
 +     *
 +     * ストリームは一時的なリソースで作成する必要があります。
 +     *
 +     * @param string $content ストリームに入力する文字列コンテンツ。
 +     */
 +    public function createStream(string $content = ''): StreamInterface;
 +
 +    /**
 +     * 既存のファイルからストリームを作成します。
 +     *
 +     * ファイルは与えられたモードを使って開かれなければなりません。
 +     * これは `fopen`関数でサポートされているどのモードでもかまいません。
 +     *
 +     * `$filename`は`fopen()`でサポートされている任意の文字列にすることができます。
 +     *
 +     * @param string $filename ストリームの基礎として使用するファイル名またはストリームURI。
 +     * @param string $mode 基本となるファイル名/ストリームを開くためのモード。
 +     *
 +     * @throws \RuntimeException ファイルを開けない場合。
 +     * @throws \InvalidArgumentException モードが無効な場合。
 +     */
 +    public function createStreamFromFile(string $filename, string $mode = 'r'): StreamInterface;
 +
 +    /**
 +     * 既存のリソースから新しいストリームを作成します。
 +     *
 +     * ストリームは読み取り可能でなければならず、書き込み可能である必要があります。
 +     *
 +     * @param resource $resource ストリームのベースとして使用するPHPリソース。
 +     */
 +    public function createStreamFromResource($resource): StreamInterface;
 +}
 +</code>
 +
 +このインターフェースの実装では、文字列からリソースを作成するときに一時ストリームを使用すべきです( ''SHOULD'' )。 そのための推奨される方法は次のとおりです( ''RECOMMENDED'' ):
 +
 +<code php>
 +$resource = fopen('php://temp', 'r+');
 </code> </code>
  
行 98: 行 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://php.net/manual/features.file-upload.post-method.php
 +     * @link http://php.net/manual/features.file-upload.errors.php
 +     *
 +     * @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;
 +}
 </code> </code>
  
行 105: 行 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 = '') : UriInterface;
 +}
 </code> </code>
  
 \\ \\
  
psr/psr17.1597715381.txt.gz · 最終更新: 2020/08/18 10:49 by tanaka