このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン 最新のリビジョン 両方とも次のリビジョン | ||
psr:psr4 [2020/05/15 23:05] y2sunlight [2. 仕様] |
psr:psr4 [2020/07/28 14:02] tanaka [PSR-4: Autoloading Standard] |
||
---|---|---|---|
行 1: | 行 1: | ||
- | > 編集中 | ||
- | |||
- | ----- | ||
- | |||
====== PSR-4: Autoloading Standard ====== | ====== PSR-4: Autoloading Standard ====== | ||
--- // | --- // | ||
- | 本章は、若干の補足を加筆してはいるものの単に[[https:// | + | 本章は、若干の補足を加筆してはいるものの単に[[https:// |
- | ==== 目次 ==== | + | 関連記事 |
- | * [[psr:top|PHP - PHP標準勧告]] | + | |
+ | * [[psr:top|PSR - PHP標準勧告]] | ||
* [[psr: | * [[psr: | ||
* [[psr: | * [[psr: | ||
行 16: | 行 13: | ||
* [[psr: | * [[psr: | ||
* [[psr: | * [[psr: | ||
+ | * [[psr: | ||
+ | * [[psr: | ||
+ | * [[psr: | ||
+ | * [[psr: | ||
+ | * [[psr: | ||
+ | * [[psr: | ||
+ | * [[psr: | ||
+ | * [[psr: | ||
+ | * [[psr: | ||
+ | * [[psr: | ||
----- | ----- | ||
行 42: | 行 49: | ||
===== 2. 仕様 ====== | ===== 2. 仕様 ====== | ||
- | 1.「クラス」という用語は、クラス、インターフェース、トレイト、および他の同様の構造を指します。 | + | **1.** **クラス**という用語は、クラス、インターフェース、トレイト、および他の同様の構造を指します。 |
+ | **2.** 完全修飾クラス名の形式は次のとおりです。 | ||
+ | <div indent> | ||
+ | < | ||
+ | \< | ||
+ | </ | ||
+ | </ | ||
+ | - 完全修飾クラス名には、**ベンダー名前空間**とも呼ばれるトップレベルの名前空間名が必要です('' | ||
+ | - 完全修飾クラス名には、1つ以上のサブ名前空間名が含まれる場合があります('' | ||
+ | - 完全修飾クラス名は、クラス名で終了しなければなりません('' | ||
+ | - アンダースコアは、完全修飾クラス名のどの部分でも特別な意味はありません。\\ \\ | ||
+ | - 完全修飾クラス名のアルファベット文字は、小文字と大文字の任意の組み合わせにすることができます('' | ||
+ | - すべてのクラス名は、大文字と小文字を区別して参照する必要があります('' | ||
+ | |||
+ | **3.** 完全修飾クラス名に対応するファイルをロードするとき… | ||
+ | |||
+ | - 完全修飾クラス名内の1つ以上の先行する名前空間とサブ名前空間名の連続したシリーズ(**名前空間プレフィックス**)は、少なくとも1つの**ベースディレクトリ**に対応します。但し、名前空間プレフィックスには先頭の名前空間セパレータ(\)は含みません。\\ \\ | ||
+ | - **名前空間プレフィックス**の後の連続するサブ名前空間名は、**ベースディレクトリ**内のサブディレクトリに対応します。そして、名前空間セパレータ(\)はディレクトリセパレータを表します。サブディレクトリ名は、サブ名前空間名と大文字小文字を含めて一致する必要があります('' | ||
+ | - 最後に位置するクラス名は .php で終わるファイル名に対応します。ファイル名は、クラス名の大文字小文字と一致する必要があります('' | ||
+ | |||
+ | |||
+ | **4.** オートローダーの実装は例外をスローしてはならず('' | ||
\\ | \\ | ||
===== 3. 例 ====== | ===== 3. 例 ====== | ||
+ | |||
+ | 以下の表は、与えられた(完全修飾クラス名, | ||
+ | |||
+ | {{tablelayout? | ||
+ | ^完全修飾クラス名^名前空間プレフィックス^ベースディレクトリ^ファイルパス^ | ||
+ | |\Acme\Log\Writer\File_Writer|Acme\Log\Writer|./ | ||
+ | |\Aura\Web\Response\Status|Aura\Web|/ | ||
+ | |\Symfony\Core\Request|Symfony\Core|./ | ||
+ | |\Zend\Acl|Zend|/ | ||
+ | |||
+ | |||
+ | 仕様に準拠したオートローダーの実装例については、[[https:// | ||
\\ | \\ | ||