5.4 PSR-4標準
PSR(PHP Standard Recommendations)是由PHP FIG(Framework Interoperability Group,框架可互用性小組)組織制定的PHP規范,是PHP開發的實踐標準。該項目通過開源框架的作者和其他協作組之間的討論,以最低程度的限制,制定一個統一的編碼規范,避免風格各異的代碼規范阻礙PHP的發展。由于這些作者都在行業內具有一定影響力,所以PSR雖然不是PHP官方的標準,但也得到大多數開發者的認同,越來越多的開發者遵從PSR標準。
FIG組織目前已表決通過了6套標準,如表5-3所示。
表5-3 FIG提出的PSR標準

本節重點講述PSR-4自動加載規范。
PSR-4是關于從文件路徑自動加載對應類的規范,本規范具有可互操作性,可以作為任一自動加載規范的補充,其中包括PSR-0。此外,本規范還描述了如何根據規范來放置自動加載的類對應的文件存放路徑。PSR-4的具體規范如下:
(1)術語“類”包括類、接口、traits可復用代碼塊以及其他類似的結構體。
(2)一個完整的、合格的類名稱具有以下格式:
\<NamespaceName>(\<SubNamespaceNames>)*\<ClassName>
● 完整的、合格的類名稱必須有一個頂級命名空間,即“vendor namespace”。
● 完整的、合格的類名稱可以有一個或多個子命名空間。
● 完整的、合格的類名稱必須有一個最終的類名稱。
● 下畫線在完整的、合格的類名稱的任何位置,都沒有任何特殊含義。
● 完整的、合格的類名稱可以由任意大小寫字母組成。
● 所有類名必須區分大小寫。
(3)根據完整的、合格的類名稱加載相應文件的規則如下:
● 完整的、合格的類名稱,去掉最前面的命名空間分隔符之后,前面連續的一個或多個命名空間和子命名空間,作為命名空間前綴,其必須與至少一個根目錄相對應。
● 命名空間前綴之后的子命名空間對應著一個根目錄中的子目錄,其中的命名空間分隔符代表目錄分隔符。子目錄名稱必須與相應的子命名空間相匹配。
● 最終類名對應著一個以.php為后綴的文件。這個文件名必須與最終類名相同。
● 自動加載器(autoloader)的實現一定不可拋出異常,一定不可觸發任一級別的錯誤信息,并且不應該有返回值。
面試題:PSR-4 標準
題目描述:什么是PSR-4,它與PSR-0有什么區別?
解答:關于PSR-4的知識見前文講解。PSR-0是關于自動加載的第一個規范,已于2014年廢棄使用,現在推薦PSR-4。它們之間的最大區別是PSR-0會將下畫線當作目錄分隔符使用,而PSR-4中下畫線沒有任何特殊含義。詳細文檔地址如表5-4所示。
表5-4 PSR標準文檔地址

- SQL Server 從入門到項目實踐(超值版)
- C++程序設計教程
- 數據科學實戰手冊(R+Python)
- Learning LibGDX Game Development(Second Edition)
- ClickHouse性能之巔:從架構設計解讀性能之謎
- PHP 從入門到項目實踐(超值版)
- Oracle 12c中文版數據庫管理、應用與開發實踐教程 (清華電腦學堂)
- Java深入解析:透析Java本質的36個話題
- Python漫游數學王國:高等數學、線性代數、數理統計及運籌學
- Gradle for Android
- Corona SDK Mobile Game Development:Beginner's Guide(Second Edition)
- Learning Material Design
- Python語言科研繪圖與學術圖表繪制從入門到精通
- Hadoop大數據分析技術
- PHP項目開發全程實錄(第4版)