Ground Sunlight

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

ユーザ用ツール

サイト用ツール


サイドバー

メインメニュー

道具箱

リポジトリ編

フレームワーク編

Webサービス編

自然言語処理環境編

メタ
リンク


このページへのアクセス
今日: 1 / 昨日: 0
総計: 67

psr:psr4

PSR-4: Autoloading Standard

y2sunlight 2020-04-28

本章は、若干の補足を加筆してはいるものの単にPSRのサイトを翻訳したものに過ぎません。英語が堪能な方は原文をご参照下さい。翻訳に当たっては、基本的に機械翻訳を使い、理解できない部分は独断で意訳しております。拙い訳では御座いますが恥を忍んで投稿しておりますので、ご指摘など御座いましたらコメントを頂ければ幸いです。

関連記事


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. 完全修飾クラス名の形式は次のとおりです。

\<名前空間名>(\<サブ名前空間名>)*\<クラス名>
  1. 完全修飾クラス名には、ベンダー名前空間とも呼ばれるトップレベルの名前空間名が必要です(MUST)。

  2. 完全修飾クラス名には、1つ以上のサブ名前空間名が含まれる場合があります(MAY)。

  3. 完全修飾クラス名は、クラス名で終了しなければなりません(MUST)。

  4. アンダースコアは、完全修飾クラス名のどの部分でも特別な意味はありません。

  5. 完全修飾クラス名のアルファベット文字は、小文字と大文字の任意の組み合わせにすることができます(MAY)。

  6. すべてのクラス名は、大文字と小文字を区別して参照する必要があります(MUST)。

3. 完全修飾クラス名に対応するファイルをロードするとき…

  1. 完全修飾クラス名内の1つ以上の先行する名前空間とサブ名前空間名の連続したシリーズ(名前空間プレフィックス)は、少なくとも1つのベースディレクトリに対応します。但し、名前空間プレフィックスには先頭の名前空間セパレータ(\)は含みません。

  2. 名前空間プレフィックスの後の連続するサブ名前空間名は、ベースディレクトリ内のサブディレクトリに対応します。そして、名前空間セパレータ(\)はディレクトリセパレータを表します。サブディレクトリ名は、サブ名前空間名と大文字小文字を含めて一致する必要があります(MUST)。

  3. 最後に位置するクラス名は .php で終わるファイル名に対応します。ファイル名は、クラス名の大文字小文字と一致する必要があります(MUST)。

4. オートローダーの実装は例外をスローしてはならず(MUST NOT)、あらゆるレベルのエラーを発生させてはならず(MUST NOT)、そして値を返すべきではありません(SHOULD NOT)。


3. 例

以下の表は、与えられた(完全修飾クラス名,名前空間プレフィックス,ベースディレクトリ)に対応するファイルパスの結果を示しています。

完全修飾クラス名名前空間プレフィックスベースディレクトリファイルパス
\Acme\Log\Writer\File_WriterAcme\Log\Writer./acme-log-writer/lib/./acme-log-writer/lib/File_Writer.php
\Aura\Web\Response\StatusAura\Web/path/to/aura-web/src//path/to/aura-web/src/Response/Status.php
\Symfony\Core\RequestSymfony\Core./vendor/Symfony/Core/./vendor/Symfony/Core/Request.php
\Zend\AclZend/usr/includes/Zend//usr/includes/Zend/Acl.php

仕様に準拠したオートローダーの実装例については、サンプルファイルをご覧ください。この実装例は仕様の一部と見なしてはいけません(MUST NOT)。この例はいつでも変更できます。


コメント

コメントを入力. Wiki文法が有効です:
 
psr/psr4.txt · 最終更新: 2020/06/30 13:27 by tanaka