CMSimple_XH
PSR-4(日本語)[原文]

オートローダ

 文書内記載されている "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY" 及び "OPTIONAL" は、,RFC 2119 (和訳) で説明される趣旨で解釈してください。

1. 概要

 このPSRは、ファイルパスから、クラスをオートローディングするための仕様について記述します。 これは、PSR-0 を含む、その他のオートロードの仕様と完全に相互運用可能であり、その他の仕様に追加して使用することができます。 また、このPSRは、この仕様に従ってオートロードされるファイルの配置についても記述しています。

2. 仕様

  1. 「クラス」 という語は,クラス,インターフェース,トレイトおよびその他類似した構造体を指します。

  2. 完全修飾クラス名は下記のように構成されます。

    \<NamespaceName>(\<SubNamespaceNames>)*\<ClassName>
    1. 完全修飾クラス名は、「ベンダーの名前空間」として知られているトップレベルの名前空間名を持っている必要があります。(MUST)
    2. 完全修飾クラス名は 1 つ以上のサブ名前空間名を持つことができます (MAY)。
    3. 完全修飾クラス名は終端クラス名を持つ必要があります。(MUST)。
    4. アンダースコアは、完全修飾クラス名のいずれの部分にも特別な意味を持ちません。
    5. 完全修飾クラス名内のアルファベットには大文字と小文字を組み合わせることができます (MAY)。
    6. 全てのクラス名では大文字小文字は区別されなければなりません (MUST)。
  3. 完全修飾クラス名に対応するファイルをロードするとき...
    1. 完全修飾クラス名の名前空間の先頭とそれに続くサブ名前空間名の連続(名前空間プレフィックス)が「ベースディレクトリ」に対応します。 ただし,完全修飾クラス名の先頭にある名前空間セパレータは名前空間プレフィックスには含まれません。
    2. 「名前空間プレフィックス」 の後ろに続く一連のサブ名前空間は 「ベースディレクトリ」 内のサブディレクトリに対応します。 名前空間セパレータはディレクトリセパレータに相当します。 サブディレクトリ名とサブ名前空間名では,アルファベットの大文字/小文字が一致していなければなりません (MUST)。
    3. 末尾のクラス名は .php で終わるファイル名に対応します。 ファイル名と末尾のクラス名とでは,アルファベットの大文字/小文字が一致していなければなりません (MUST)。
  4. オートローダの実装は例外をスローしてはならず (MUST NOT),いかなるレベルのエラーも発生させてはならず (MUST NOT),また値を返すべきではありません (SHOULD NOT)。

3. 例

 完全修飾クラス名,名前空間プレフィックス,ベースディレクトリの関係を下表に示します。

Fully Qualified Class NameNamespace PrefixBase DirectoryResulting File Path
\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

 本仕様に沿ったオートローダの実装例は examples file を参照してください。この実装例は本仕様の一部とみなしてはならず (MUST NOT),いつでも変更することができます (MAY)。