PSR-4 自動載入規範
阿新 • • 發佈:2019-02-05
關鍵詞 “必須”(“MUST”)、“一定不可/一定不能”(“MUST NOT”)、“需要”(“REQUIRED”)、
“將會”(“SHALL”)、“不會”(“SHALL NOT”)、“應該”(“SHOULD”)、“不該”(“SHOULD NOT”)、
“推薦”(“RECOMMENDED”)、“可以”(“MAY”)和”可選“(“OPTIONAL”)的詳細描述可參見 RFC 2119
1. 概述
本PSR是關於由檔案路徑自動載入對應類的相關規範,本規範是可互操作的,可以作為任一自動載入規範的補充,其中包括PSR-0,此外,本 PSR 還包括自動載入的類對應的檔案存放路徑規範。
2. 詳細說明
- 此處的類泛指class類、介面、traits可複用程式碼塊以及其它類似結構。
一個完全限定的類名稱有以下形式:
- 完全限定類名必須要有一個頂級名稱空間,被稱為”vendor namespace”。
- 完全限定類名可以有一個或多個子名稱空間。
- 完全限定類名必須有一個終止的類名。
- 在完全限定類名的任何部分中,下劃線都沒有特殊的意義。
- 所有的類名必須以大小寫敏感的方式引用。
當載入一個對應於一個完全限定的類名稱的檔案時…
- 在完全限定類命中,連續的一個或幾個子名稱空間構成的
名稱空間字首
(不包括頂級名稱空間的分隔符)至少對應著至少一個基礎目錄
- 在 名稱空間字首後的連續的子名稱空間名稱對應著 基礎目錄下的子目錄,其中的名稱空間分隔符表示目錄分隔符,子目錄名稱必須
- 終止類名必須與對應的以.php為字尾的檔案同名。
- 在完全限定類命中,連續的一個或幾個子名稱空間構成的
自動載入器(autoloader)的實現一定不能丟擲異常、一定不能觸發任一級別的錯誤資訊以及不應該有返回值。
3. 例子
下面的表顯示了符合規範完整類名、名稱空間字首和檔案基目錄所對應的檔案路徑。
完整的限定類名 | 名稱空間字首 | 檔案基目錄 | 檔案路徑 |
---|---|---|---|
\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 |
關於本規範的實現,可參閱相關例項。
注意:例項並不屬於規範的一部分,且隨時會有所變動。