Ground Sunlight

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

ユーザ用ツール

サイト用ツール


psr:psr7

差分

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

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

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
psr:psr7 [2020/06/16 21:44]
y2sunlight [1.6 アップロードファイル]
psr:psr7 [2020/09/01 11:53] (現在)
tanaka [PSR-7: HTTP message interfaces]
行 3: 行 3:
  --- //[[http://www.y2sunlight.com|y2sunlight]] 2020-05-25//  --- //[[http://www.y2sunlight.com|y2sunlight]] 2020-05-25//
  
-本章は、若干の補足を加筆してはいるものの単に[[https://www.php-fig.org/psr/|PSRのサイト]]を翻訳したものに過ぎません。英語が堪能な方は原文をご参照下さい。翻訳に当たっては、基本的に機械翻訳を使い、理解できない部分は独断で意訳しております。拙い訳では御座いますが恥を忍んで投稿しておりますので、ご指摘など御座いましたらコメントを頂ければ幸いです。+本章は、若干の補足を加筆してはいるものの単に[[https://www.php-fig.org/psr/|PSRのサイト]]を日本語に翻訳したものに過ぎません。英語が堪能な方は原文をご参照下さい。翻訳に当たっては、基本的に機械翻訳を使い、理解できない部分は独断で意訳しております。拙い訳では御座いますが恥を忍んで投稿しておりますので、ご指摘など御座いましたらコメントを頂ければ幸いです。 
 + 
 +関連記事
  
-==== 目次 ==== 
   * [[psr:top|PSR - PHP標準勧告]]   * [[psr:top|PSR - PHP標準勧告]]
   * [[psr:psr1|PSR-1: Basic Coding Standard - 基本コーディング規約]]   * [[psr:psr1|PSR-1: Basic Coding Standard - 基本コーディング規約]]
行 14: 行 15:
   * PSR-7: HTTP Message Interface - HTTPメッセージインターフェイス   * PSR-7: HTTP Message Interface - HTTPメッセージインターフェイス
   * [[psr:psr11|PSR-11: Container Interface - コンテナインターフェイス]]    * [[psr:psr11|PSR-11: Container Interface - コンテナインターフェイス]] 
 +  * [[psr:psr12|PSR-12: Extended Coding Style - 拡張コーディングスタイル]] 
 +  * [[psr:psr13|PSR-13: Link definition interfaces - リンク定義インターフェース]]
 +  * [[psr:psr14|PSR-14: Event Dispatcher - イベントディスパッチャー]] 
 +  * [[psr:psr15|PSR-15: HTTP Server Request Handlers - HTTPサーバーリクエストハンドラー]] 
 +  * [[psr:psr16|PSR-16: Common Interface for Caching Libraries - キャッシングライブラリのための共通インターフェース]] 
 +  * [[psr:psr17|PSR-17: HTTP Factories - HTTPファクトリー]] 
 +  * [[psr:psr18|PSR-18: HTTP Client - HTTPクライアント]] 
 +  * [[psr:psr19|PSR-19: PHPDoc tags(Draft) - PHPDocタグ]] 
  
 ----- -----
行 239: 行 248:
  
 ''ServerRequestInterface'' は、正規化された構造でアップロードファイルのツリーを取得するメソッドを規定します。そのツリーの各リーフには ''UploadedFileInterface'' のインスタンスがあります。 ''ServerRequestInterface'' は、正規化された構造でアップロードファイルのツリーを取得するメソッドを規定します。そのツリーの各リーフには ''UploadedFileInterface'' のインスタンスがあります。
- 
-The $_FILES superglobal has some well-known problems when dealing with arrays of file inputs. As an example, if you have a form that submits an array of files — e.g., the input name “files”, submitting files[0] and files[1] — PHP will represent this as: 
  
 ''$_FILES'' スーパーグローバル変数には、ファイル入力の配列を処理するときによく知られた問題がいくつかあります。例として、ファイルの配列を送信するフォームがある場合(例えば入力名を「files」とする)、''files[0]'' と ''files[1]'' を送信すると、PHPはこれを次のように表します: ''$_FILES'' スーパーグローバル変数には、ファイル入力の配列を処理するときによく知られた問題がいくつかあります。例として、ファイルの配列を送信するフォームがある場合(例えば入力名を「files」とする)、''files[0]'' と ''files[1]'' を送信すると、PHPはこれを次のように表します:
行 285: 行 292:
   * HTTPメソッドが ''POST'' でない場合   * HTTPメソッドが ''POST'' でない場合
   * ユニットテストの時   * ユニットテストの時
-  * [[https://reactphp.org/|ReactPHP]のように非SAPI環境下で操作する場合+  * [[https://reactphp.org/|ReactPHP]]のように非SAPI環境下で操作する場合
  
 そのような場合、データを別の方法でシード(特別な処理)する必要があります。例としては: そのような場合、データを別の方法でシード(特別な処理)する必要があります。例としては:
行 296: 行 303:
  
   * 与えられたファイルアップロードのすべての情報を集約し、それを使用して ''Psr\Http\Message\UploadedFileInterface'' インスタンスに設定します。   * 与えられたファイルアップロードのすべての情報を集約し、それを使用して ''Psr\Http\Message\UploadedFileInterface'' インスタンスに設定します。
 +
   * 送信されたツリー構造を再作成します。その時各リーフは、ツリー内の与えられた場所に対して適切な''Psr\Http\Message\UploadedFileInterface'' のインスタンスになります。   * 送信されたツリー構造を再作成します。その時各リーフは、ツリー内の与えられた場所に対して適切な''Psr\Http\Message\UploadedFileInterface'' のインスタンスになります。
  
行 389: 行 397:
  
 (例として、JavaScriptコントロールは、複数のファイルを一度にアップロードできるように、追加のファイルアップロード入力を生成する場合があります。) (例として、JavaScriptコントロールは、複数のファイルを一度にアップロードできるように、追加のファイルアップロード入力を生成する場合があります。)
- 
-In such a case, the specification implementation must aggregate all information related to the file at the given index. The reason is because $_FILES deviates from its normal structure in such cases: 
  
 このような場合、仕様の実装では、指定されたインデックスにあるファイルに関連するすべての情報を集約する必要があります。その理由は、''$_FILES'' は通常の構造から逸脱しているためです。それは、次のような場合です: このような場合、仕様の実装では、指定されたインデックスにあるファイルに関連するすべての情報を集約する必要があります。その理由は、''$_FILES'' は通常の構造から逸脱しているためです。それは、次のような場合です:
行 484: 行 490:
 // "Received the files file0.txt and file1.html" // "Received the files file0.txt and file1.html"
 </code> </code>
- 
-This proposal also recognizes that implementations may operate in non-SAPI environments. As such, UploadedFileInterface provides methods for ensuring operations will work regardless of environment. In particular: 
  
 この提案は、実装が非SAPI環境で動作する可能性があることも認識しています。従って、''UploadedFileInterface'' は、環境に関係なく操作が確実に機能するためのメソッドを提供します。 特に: この提案は、実装が非SAPI環境で動作する可能性があることも認識しています。従って、''UploadedFileInterface'' は、環境に関係なく操作が確実に機能するためのメソッドを提供します。 特に:
行 491: 行 495:
   * ''moveTo($targetPath)'' は、一時的なアップロードファイルで直接 ''move_uploaded_file()'' を呼び出すより安全で推奨される代替手段として提供されています。実装は、環境に基づいて使用する正しい操作を検出します。   * ''moveTo($targetPath)'' は、一時的なアップロードファイルで直接 ''move_uploaded_file()'' を呼び出すより安全で推奨される代替手段として提供されています。実装は、環境に基づいて使用する正しい操作を検出します。
  
-  * ''getStream()'' は ''StreamInterface'' インスタンスを返します。非SAPIの環境下では、個々のアップロードファイルを解析して直接ファイルにではなく ''php://temp'' ストリームにすることが提案されています。このような場合、アップロードファイルは存在しないことになり、従って、''getStream()'' は環境に関係なく動作することが保証されています。+  * ''getStream()'' は ''StreamInterface'' インスタンスを返します。非SAPIの環境下では、個々のアップロードファイルを解析して直接ファイルにではなく ''php:<nowiki>//</nowiki>temp'' ストリームにすることが提案されています。このような場合、アップロードファイルは存在しないことになり、従って、''getStream()'' は環境に関係なく動作することが保証されています。
  
 例として: 例として:
行 512: 行 516:
 //  // 
 // ファイルを Amazon S3 にストリーミングします。 // ファイルを Amazon S3 にストリーミングします。
-// $s3wrapper が S3 に書き込むPHPストリームであり、Psr7StreamWrapper が StreamInterface を +// $s3wrapper が S3 に書き込むPHPストリームであり、 
-// PHP StreamWrapper として装飾するクラスであると定します。+// Psr7StreamWrapper が StreamInterface を 
 +// PHP StreamWrapper として装飾するクラスであると定します。
  
 $stream = new Psr7StreamWrapper($file1->getStream()); $stream = new Psr7StreamWrapper($file1->getStream());
psr/psr7.1592311468.txt.gz · 最終更新: 2020/06/16 21:44 by y2sunlight