1. 程式人生 > >PHP規範PSR4(自動載入)介紹(一)

PHP規範PSR4(自動載入)介紹(一)

本文件中的關鍵詞“必須”,“必須”,“必需”,“應該”,“不應該”,“應該”,“不應該”,“推薦”,“可以”和“可選”按照RFC 2119中的描述進行解釋。

1 概述

此PSR描述了從檔案路徑自動載入類的規範。它完全可互操作,除了包括PSR-0在內的任何其他自動載入規範外,還可以使用它。此PSR還描述了根據規範放置將自動載入的檔案的位置。

2 細則

(1)術語“類”指的是類,介面,特徵和其他類似結構。

(2)完全限定的類名具有以下形式:

\<NamespaceName>(\<SubNamespaceNames>)*\<ClassName>
  1. 完全限定的類名必須具有頂級名稱空間名稱,也稱為“供應商名稱空間”。
  2. 完全限定的類名可以具有一個或多個子名稱空間名稱。
  3. 完全限定的類名必須具有終止類名。
  4. 下劃線在完全限定類名的任何部分都沒有特殊含義。
  5. 完全限定類名中的字母字元可以是小寫和大寫的任意組合。
  6. 必須以區分大小寫的方式引用所有類名。

(3)載入對應於完全限定類名的檔案時...

  1. 完全限定類名稱(“名稱空間字首”)中的一個或多個前導名稱空間和子名稱空間名稱的連續系列(不包括前導名稱空間分隔符)對應於至少一個“基本目錄”。
  2. “名稱空間字首”之後的連續子名稱空間名稱對應於“基本目錄”中的子目錄,其中名稱空間分隔符表示目錄分隔符。子目錄名稱必須與子名稱空間名稱的大小寫匹配。
  3. 終止類名對應於以.php結尾的檔名。檔名必須與終止類名稱的大小寫相匹配。

(4) Autoloader實現絕不能丟擲異常,不得引發任何級別的錯誤,並且不應返回值。

3 例子

下表顯示了給定的完全限定類名,名稱空間字首和基目錄的相應檔案路徑。

FULLY QUALIFIED CLASS NAME NAMESPACE PREFIX BASE DIRECTORY RESULTING 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

有關符合規範的自動載入器的實現,請參閱示例檔案。示例實現不得視為規範的一部分,並且可以隨時更改。