メインメニュー
XAMPP アレンジ
IED
WSL2
-
道具箱
リポジトリ編
フレームワーク編
公開ソフトウェア
メタ
リンク
- PHP ライブラリ
- PHP 言語
psr:psr4PSR-4: Autoloading Standard
— y2sunlight 2020-04-28
本章は、若干の補足を加筆してはいるものの単にPSRのサイトを日本語に翻訳したものに過ぎません。英語が堪能な方は原文をご参照下さい。翻訳に当たっては、基本的に機械翻訳を使い、理解できない部分は独断で意訳しております。拙い訳では御座いますが恥を忍んで投稿しておりますので、ご指摘など御座いましたらコメントを頂ければ幸いです。
関連記事
- PSR-4: Autoloading Standard - オートローディング規約
PSR-4: オートローディング規約
— 原文より翻訳 PSR-4: Autoloader 2020-04-28 現在
このドキュメントのキーワード
MUST
,MUST NOT
,REQUIRED
,SHALL
,SHALL NOT
,SHOULD
,SHOULD NOT
,RECOMMENDED
,MAY
及びOPTIONAL
は、 RFC 2119で説明されているように解釈して下さい。RFC 2119の説明
MUST
,REQUIRED
,SHALL
— 絶対必要
MUST NOT
,SHALL NOT
— 絶対禁止
SHOULD
,RECOMMENDED
— 推奨(但し、無視できる特定の正当な理由が存在するかもしれない)
SHOULD NOT
— 推奨できない(但し、許可できる特定の正当な理由が存在するかもしれない)
MAY
,OPTIONAL
— オプション
1. 概観
このPSRは、ファイルパスからクラスを自動ロードするための仕様を記述しています。それは完全な相互運用性があり(PSR-0を含む)他のオートローディング仕様に加えて使用できます。このPSRでは、仕様に従ってオートロードされるファイルを配置する場所についても説明します。
2. 仕様
1. クラスという用語は、クラス、インターフェース、トレイト、および他の同様の構造を指します。
2. 完全修飾クラス名の形式は次のとおりです。
\<名前空間名>(\<サブ名前空間名>)*\<クラス名>
- 完全修飾クラス名には、ベンダー名前空間とも呼ばれるトップレベルの名前空間名が必要です(
MUST
)。
- 完全修飾クラス名には、1つ以上のサブ名前空間名が含まれる場合があります(
MAY
)。
- 完全修飾クラス名は、クラス名で終了しなければなりません(
MUST
)。
- アンダースコアは、完全修飾クラス名のどの部分でも特別な意味はありません。
- 完全修飾クラス名のアルファベット文字は、小文字と大文字の任意の組み合わせにすることができます(
MAY
)。
- すべてのクラス名は、大文字と小文字を区別して参照する必要があります(
MUST
)。
3. 完全修飾クラス名に対応するファイルをロードするとき…
- 完全修飾クラス名内の1つ以上の先行する名前空間とサブ名前空間名の連続したシリーズ(名前空間プレフィックス)は、少なくとも1つのベースディレクトリに対応します。但し、名前空間プレフィックスには先頭の名前空間セパレータ(\)は含みません。
- 名前空間プレフィックスの後の連続するサブ名前空間名は、ベースディレクトリ内のサブディレクトリに対応します。そして、名前空間セパレータ(\)はディレクトリセパレータを表します。サブディレクトリ名は、サブ名前空間名と大文字小文字を含めて一致する必要があります(
MUST
)。
- 最後に位置するクラス名は .php で終わるファイル名に対応します。ファイル名は、クラス名の大文字小文字と一致する必要があります(
MUST
)。
4. オートローダーの実装は例外をスローしてはならず(
MUST NOT
)、あらゆるレベルのエラーを発生させてはならず(MUST NOT
)、そして値を返すべきではありません(SHOULD NOT
)。
3. 例
以下の表は、与えられた(完全修飾クラス名,名前空間プレフィックス,ベースディレクトリ)に対応するファイルパスの結果を示しています。
完全修飾クラス名 名前空間プレフィックス ベースディレクトリ ファイルパス \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 仕様に準拠したオートローダーの実装例については、サンプルファイルをご覧ください。この実装例は仕様の一部と見なしてはいけません(
MUST NOT
)。この例はいつでも変更できます。
psr/psr4.txt · 最終更新: 2020/09/01 11:52 by tanaka
コメント