guttally.net

PSR-4 を和訳してみた

 PHP のオートローディングに関する仕様として PSR-0 がありましたが,2014/10/21 付けで非推奨 (deprecated) となりました。 というわけで,PSR-0 の代替として推奨されている 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. 完全修飾クラス名の先頭から始まる 1 つ以上の連続した名前空間名とサブ名前空間名 (これを 「名前空間プレフィックス」 という) は少なくとも 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)。

コメントを残す



(このメールアドレスは表示されません。)


Captcha認証コード

Captchaをクリックすると違う文字候補が出てきます。