Ground Sunlight

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

ユーザ用ツール

サイト用ツール


psr:psr4

差分

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

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

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
psr:psr4 [2020/05/15 23:44]
y2sunlight [2. 仕様]
psr:psr4 [2020/09/01 11:52] (現在)
tanaka [PSR-4: Autoloading Standard]
行 1: 行 1:
-> 編集中 
- 
------ 
- 
 ====== PSR-4: Autoloading Standard ====== ====== PSR-4: Autoloading Standard ======
  
  --- //[[http://www.y2sunlight.com|y2sunlight]] 2020-04-28//  --- //[[http://www.y2sunlight.com|y2sunlight]] 2020-04-28//
  
-本章は、若干の補足を加筆してはいるものの単に[[https://www.php-fig.org/psr/|PSRのサイト]]を翻訳したものに過ぎません。英語が堪能な方は原文をご参照下さい。翻訳に当たっては、基本的に機械翻訳を使い、理解できない部分は独断で意訳しております。拙い訳では御座いますが恥を忍んで投稿しておりますので、ご指摘など御座いましたらコメントを頂ければ幸いです。+本章は、若干の補足を加筆してはいるものの単に[[https://www.php-fig.org/psr/|PSRのサイト]]を日本語に翻訳したものに過ぎません。英語が堪能な方は原文をご参照下さい。翻訳に当たっては、基本的に機械翻訳を使い、理解できない部分は独断で意訳しております。拙い訳では御座いますが恥を忍んで投稿しておりますので、ご指摘など御座いましたらコメントを頂ければ幸いです。
  
-==== 目次 ==== +関連記事 
-  * [[psr:top|PHP - PHP標準勧告]]+ 
 +  * [[psr:top|PSR - PHP標準勧告]]
   * [[psr:psr1|PSR-1: Basic Coding Standard - 基本コーディング規約]]   * [[psr:psr1|PSR-1: Basic Coding Standard - 基本コーディング規約]]
   * [[psr:psr3|PSR-3: Logger Interface - ロガーインターフェイス]]   * [[psr:psr3|PSR-3: Logger Interface - ロガーインターフェイス]]
行 16: 行 13:
   * [[psr:psr5|PSR-5: PHPDoc Standard(Draft) - PHPDoc規約]]   * [[psr:psr5|PSR-5: PHPDoc Standard(Draft) - PHPDoc規約]]
   * [[psr:psr6|PSR-6: Caching Interface - キャッシングインターフェイス]]    * [[psr:psr6|PSR-6: Caching Interface - キャッシングインターフェイス]] 
 +  * [[psr:psr7|PSR-7: HTTP Message Interface - HTTPメッセージインターフェイス]] 
 +  * [[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タグ]] 
  
 ----- -----
行 42: 行 49:
 ===== 2. 仕様 ====== ===== 2. 仕様 ======
  
-1.クラスという用語は、クラス、インターフェース、トレイト、および他の同様の構造を指します。+**1.** **クラス**という用語は、クラス、インターフェース、トレイト、および他の同様の構造を指します。
  
-2.完全修飾クラス名の形式は次のとおりです。+**2.** 完全修飾クラス名の形式は次のとおりです。
  
 <div indent> <div indent>
行 52: 行 59:
 </div> </div>
  
-  - 完全修飾クラス名には、**ベンダー名前空間**とも呼ばれるトップレベルの名前空間名が必要です(''MUST'')。 +  - 完全修飾クラス名には、**ベンダー名前空間**とも呼ばれるトップレベルの名前空間名が必要です(''MUST'')。\\ \\ 
-  - 完全修飾クラス名には、1つ以上のサブ名前空間名が含まれる場合があります(''MAY'')。 +  - 完全修飾クラス名には、1つ以上のサブ名前空間名が含まれる場合があります(''MAY'')。\\ \\ 
-  - 完全修飾クラス名は、クラス名で終了しなければなりません(''MUST'')。 +  - 完全修飾クラス名は、クラス名で終了しなければなりません(''MUST'')。\\ \\ 
-  - アンダースコアは、完全修飾クラス名のどの部分でも特別な意味はありません。 +  - アンダースコアは、完全修飾クラス名のどの部分でも特別な意味はありません。\\ \\ 
-  - 完全修飾クラス名のアルファベット文字は、小文字と大文字の任意の組み合わせにすることができます(''MAY'')。 +  - 完全修飾クラス名のアルファベット文字は、小文字と大文字の任意の組み合わせにすることができます(''MAY'')。\\ \\ 
-  - すべてのクラス名は、大文字と小文字を区別して参照する必要があります(''MUST'')。+  - すべてのクラス名は、大文字と小文字を区別して参照する必要があります(''MUST'')。\\ \\ 
 + 
 +**3.** 完全修飾クラス名に対応するファイルをロードするとき… 
 + 
 +  - 完全修飾クラス名内の1つ以上の先行する名前空間とサブ名前空間名の連続したシリーズ(**名前空間プレフィックス**)は、少なくとも1つの**ベースディレクトリ**に対応します。但し、名前空間プレフィックスには先頭の名前空間セパレータ(\)は含みません。\\ \\ 
 +  - **名前空間プレフィックス**の後の連続するサブ名前空間名は、**ベースディレクトリ**内のサブディレクトリに対応します。そして、名前空間セパレータ(\)はディレクトリセパレータを表します。サブディレクトリ名は、サブ名前空間名と大文字小文字を含めて一致する必要があります(''MUST'')。\\ \\ 
 +  - 最後に位置するクラス名は .php で終わるファイル名に対応します。ファイル名は、クラス名の大文字小文字と一致する必要があります(''MUST'')。\\ \\ 
 + 
 + 
 +**4.** オートローダーの実装は例外をスローしてはならず(''MUST NOT'')、あらゆるレベルのエラーを発生させてはならず(''MUST NOT'')、そして値を返すべきではありません(''SHOULD NOT'')。
  
 \\ \\
  
 ===== 3. 例 ====== ===== 3. 例 ======
 +
 +以下の表は、与えられた(完全修飾クラス名,名前空間プレフィックス,ベースディレクトリ)に対応する**ファイルパス**の結果を示しています。
 +
 +{{tablelayout?colwidth="220px,180px,200px,320px"}}
 +^完全修飾クラス名^名前空間プレフィックス^ベースディレクトリ^ファイルパス^
 +|\Acme\Log\Writer\File_Writer|Acme\Log\Writer|./acme-log-writer/lib/|./acme-log-writer/lib/File_Writer.php|
 +|\Aura\Web\Response\Status|Aura\Web|/path/to/aura-web/src/|/path/to/aura-web/src/Response/Status.php|
 +|\Symfony\Core\Request|Symfony\Core|./vendor/Symfony/Core/|./vendor/Symfony/Core/Request.php|
 +|\Zend\Acl|Zend|/usr/includes/Zend/|/usr/includes/Zend/Acl.php|
 +
 +
 +仕様に準拠したオートローダーの実装例については、[[https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-4-autoloader-examples.md|サンプルファイル]]をご覧ください。この実装例は仕様の一部と見なしてはいけません(''MUST NOT'')。この例はいつでも変更できます。
  
 \\ \\
  
  
psr/psr4.1589553845.txt.gz · 最終更新: 2020/05/15 23:44 by y2sunlight