網址:PSR-4: Autoloader
Specification
(1) "class" 是指所有的類別classes,介面 interfaces,特性traits,和其他相似的結構。(2) 一個完整 class 名稱有以下格式:
\<命名空間>(\<子命名空間>)*\<類別名稱>
(3) 當載入對應完整 class 名稱的檔案...
\<NamespaceName>(\<SubNamespaceNames>)*\<ClassName>
- 完整 class 名稱 “必須” 包含頂層命名空間名稱,也被稱為vendor namespace
- 完整 class 名稱 “可能” 包含一個或更多次級命名空間名稱。
- 完整 class 名稱 “必須” 包含一個尾端類別名稱
- 底線在完整 class 名稱的任何位置都沒有特殊意義。
- 完整 class 名稱裡的英文字母 “可以” 是大小寫混合。
- 所有 class 名稱 “必須” 以區分大小寫的方式被參考。
- 接在完整 class 名稱(的命名空間前綴)之後,一個或多個前導命名空間和接續的命名空間(不包含前導命名空間前的分隔符號),至少會對應到一個「基底資料夾」。
- 在「命名空間前綴」之後,接續的命名空間名稱會對應到「基底資料夾」下的子資料夾,命名空間分隔符號代表了資料夾的分層。子資料夾 “必須” 符合命名空間名稱的大小寫。
- 尾端 class 名稱對應到以 .php 結尾的檔案,檔案 “必須” 符合 class 名稱的大小寫。
Examples
下表展示了符合規範完整類名、命名空間前綴和文件基目錄所對應的文件路徑。
| 完整 class 名稱 | 命名空間前綴 | 基底資料夾 | 對應檔案路徑 |
| \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 |
沒有留言:
張貼留言