PHP編碼規範(PSR-4)-Autoloader 自動加載

PSR-4 Autoloader

1. 概述

本 PSR 是關於由文件路徑 自動載入 對應類的相關規範, 本規範是可互操做的,能夠做爲任一自動載入規範的補充,其中包括 PSR-0,此外, 本 PSR 還包括自動載入的類對應的文件存放路徑規範。php

2. 詳細說明

1. 此處的「類」泛指全部的class類、接口、traits可複用代碼塊以及其它相似結構。
2. 一個完整的類名需具備如下結構:

\<命名空間>(\<子命名空間>)*\<類名>git

  1. 完整的類名必需要有一個頂級命名空間,被稱爲 "vendor namespace";
  2. 完整的類名能夠有一個或多個子命名空間;
  3. 完整的類名必須有一個最終的類名;
  4. 完整的類名中任意一部分中的下劃線都是沒有特殊含義的;
  5. 完整的類名能夠由任意大小寫字母組成;
  6. 全部類名都必須是大小寫敏感的。
3. 當根據完整的類名載入相應的文件……
  1. 完整的類名中,去掉最前面的命名空間分隔符,前面連續的一個或多個命名空間和子命名空間,做爲「命名空間前綴」,其必須與至少一個「文件基目錄」相對應;
  2. 緊接命名空間前綴後的子命名空間必須與相應的」文件基目錄「相匹配,其中的命名空間分隔符將做爲目錄分隔符。
  3. 末尾的類名必須與對應的以 .php 爲後綴的文件同名。
  4. 自動加載器(autoloader)的實現必定不能拋出異常、必定不能觸發任一級別的錯誤信息以及不該該有返回值。

3. 例子

下表展現了符合規範完整類名、命名空間前綴和文件基目錄所對應的文件路徑。 | 完整類名 | 命名空間前綴 | 文件基目錄 | 文件路徑github

| \Acme\Log\Writer\File_Writer | Acme\Log\Writer | ./acme-log-writer/lib/ | ./acme-log-writer/lib/File_Writer.phpweb

| \Aura\Web\Response\Status | Aura\Web | /path/to/aura-web/src/ | /path/to/aura-web/src/Response/Status.phpsegmentfault

| \Symfony\Core\Request | Symfony\Core | ./vendor/Symfony/Core/ | ./vendor/Symfony/Core/Request.phpspa

| \Zend\Acl | Zend | /usr/includes/Zend/ | /usr/includes/Zend/Acl.phpcode

關於本規範的實現,可參閱 相關實例 注意:實例並不屬於規範的一部分,且隨時會有所變更。接口

參考文檔

相關文章
相關標籤/搜索