【php】【psr】psr4 自動加載規範

規範了自動載入類的機制php

完整的類型 \根命名空間\子命名空間\類名web

類名

  • 完整的命名空間必需要有根命名空間
  • 完整的類名能夠有多個字命名空間 如 \Vendor\Cake\Name\ClassName
  • 完整的類名最右邊必須有一個類名
  • 完整的類名任意一部分中的下劃線都沒有特殊含義
  • 完整的類名能夠由任意的大小寫字母構成
  • 全部的類名必須是大小寫敏感的

載入機制

  • 完整的類名中,去掉最前面的命名空間分隔符,前面連續的一個或多個命名空間和子命名空間,做爲「命名空間前綴」,其必須與至少一個「文件基目錄」相對應
  • 緊接命名空間前綴後的子命名空間 必須 與相應的「文件基目錄」相匹配,其中的命名空間分隔符將做爲目錄分隔符
  • 末尾的類名 必須 與對應的以 .php 爲後綴的文件同名。
  • 自動加載器(autoloader)的實現 必定不可 拋出異常、必定不可 觸發任一級別的錯誤信息以及 不該該 有返回值

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

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

未完待續table

相關文章
相關標籤/搜索