PSR-4 自動載入

2018-02-24 16:23 更新

Autoloader

關(guān)鍵詞 “必須”("MUST")、“一定不可/一定不能”("MUST NOT")、“需要”("REQUIRED")、 “將會”("SHALL")、“不會”("SHALL NOT")、“應(yīng)該”("SHOULD")、“不該”("SHOULD NOT")、 “推薦”("RECOMMENDED")、“可以”("MAY")和”可選“("OPTIONAL")的詳細描述可參見 [RFC 2119][] 。

1. 概述

本 PSR 是關(guān)于由文件路徑 [自動載入][http://tools.ietf.org/html/rfc2119] 對應(yīng)類的相關(guān)規(guī)范, 本規(guī)范是可互操作的,可以作為任一自動載入規(guī)范的補充,其中包括 PSR-0,此外, 本 PSR 還包括自動載入的類對應(yīng)的文件存放路徑規(guī)范。

2. 詳細說明

  1. 此處的“類”泛指所有的class類、接口、traits可復(fù)用代碼塊以及其它類似結(jié)構(gòu)。

  2. 一個完整的類名需具有以下結(jié)構(gòu):
 \<命名空間>(\<子命名空間>)*\<類名>
  1. 完整的類名必須要有一個頂級命名空間,被稱為 "vendor namespace";

  2. 完整的類名可以有一個或多個子命名空間;

  3. 完整的類名必須有一個最終的類名;

  4. 完整的類名中任意一部分中的下滑線都是沒有特殊含義的;

  5. 完整的類名可以由任意大小寫字母組成;

  6. 所有類名都必須是大小寫敏感的。

  7. 當根據(jù)完整的類名載入相應(yīng)的文件……

  8. 完整的類名中,去掉最前面的命名空間分隔符,前面連續(xù)的一個或多個命名空間和子命名空間,作為“命名空間前綴”,其必須與至少一個“文件基目錄”相對應(yīng);

  9. 緊接命名空間前綴后的子命名空間必須與相應(yīng)的”文件基目錄“相匹配,其中的命名空間分隔符將作為目錄分隔符。

  10. 末尾的類名必須與對應(yīng)的以 .php 為后綴的文件同名。

  11. 自動加載器(autoloader)的實現(xiàn)一定不能拋出異常、一定不能觸發(fā)任一級別的錯誤信息以及不應(yīng)該有返回值。

3. 例子

下表展示了符合規(guī)范完整類名、命名空間前綴和文件基目錄所對應(yīng)的文件路徑。

完整類名 命名空間前綴 文件基目錄 文件路徑
\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

關(guān)于本規(guī)范的實現(xiàn),可參閱 相關(guān)實例
注意:實例并屬于規(guī)范的一部分,且隨時有所變動。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號