Autoloader
關鍵字「必須」("MUST")、「一定不可/一定不能」("MUST NOT")、「需要」("REQUIRED")、
「將會」("SHALL")、「不會”("SHALL NOT")、“應該”("SHOULD")、“不該”("SHOULD NOT")、
“推薦”("RECOMMENDED")、“可以”("MAY")和”可選「("OPTIONAL")的詳細描述可參考[RFC 2119][] 。
1. 概述
本PSR 是關於由文件路徑 自動載入 對應類別的相關規範,
本規範是可互通的,可以作為任一自動載入規範的補充,其中包括 PSR-0,此外,
本PSR 還包括自動載入的類別對應的檔案存放路徑規格。
2. 詳細說明
此處的「類別」泛指所有的class類別、介面、traits可重複使用程式碼區塊以及其它類似結構。
一個完整的類別名稱需要具有以下結構:
<code>\<span><<span>命名空间</span>></span>(\<span><<span>子命名空间</span>></span>)*\<span><<span>类名</span>></span></code>
完整的類別名稱必須要有一個頂層命名空間,被稱為"vendor namespace";
要有一個頂層命名空間,被稱為"vendor namespace";可以有一個或多個子命名空間;
完整的類名必須有一個最終的類名;
完整的類名中任意一部分中的下滑線都是沒有特殊含義的;
完整的類別名稱可以由任意大小寫字母組成;
所有類別名稱都必須是大小寫敏感的。
當根據完整的類別名稱載入對應的檔案…
完整的類別名稱中,去掉最前面的命名空間分隔符,前面連續的一個或多個命名空間和子命名空間,作為“命名空間前綴”,其必須與至少一個“文件基目錄”相對應;
緊接命名空間前綴後的子命名空間必須與相應的”文件基目錄“相匹配,其中的命名空間分隔符號將作為目錄分隔符號。
末尾的類別名稱必須與對應的以 .php
為後綴的檔案同名。
自動載入器(autoloader)的實作一定不能拋出異常、一定不能觸發任一層級的錯誤訊息、不應該有回傳值。
3. 範例
下表展示了符合規範完整類別名稱、命名空間前綴和檔案基底目錄所對應的檔案路徑。
完整類別名稱 | 命名空間前綴 | 檔案基底目錄 | 檔案路徑 |
---|---|---|---|
./acme -log-writer/lib/File_Writer.php | AuraWebResponseStatus | AuraWeb | |
/path/path/Re | SymfonyCoreRequest | SymfonyCore | |
./vendor/Symfony/Core/Request.php | ./vendor/Symfony/Core/Request.php🜎 /includes/Zend/ | / usr/includes/Zend/Acl.php | |
關於本規範的實現,可參閱 相關實例 | 注意:實例並不 | 屬於規範的一部分,且隨時會 | 有所變動。以上就介紹了PHP PSR-4 Autoloader 自動載入中文版,包含了loader方面的內容,希望對PHP教學有興趣的朋友有幫助。 |