このページの2つのバージョン間の差分を表示します。
| 両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン | ||
|
psr:psr4 [2020/05/15 23:41] y2sunlight [2. 仕様] |
psr:psr4 [2020/09/01 11:52] (現在) 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.完全修飾クラス名の形式は次のとおりです。 | + | **2.** 完全修飾クラス名の形式は次のとおりです。 |
| <div indent> | <div indent> | ||
| 行 52: | 行 59: | ||
| </ | </ | ||
| - | - 完全修飾クラス名には、**ベンダー名前空間**とも呼ばれるトップレベルの名前空間名が必要です('' | + | - 完全修飾クラス名には、**ベンダー名前空間**とも呼ばれるトップレベルの名前空間名が必要です('' |
| - | - 完全修飾クラス名には、1つ以上のサブ名前空間名が含まれる場合があります('' | + | - 完全修飾クラス名には、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:// | ||
| \\ | \\ | ||