> psr-0
作曲家
作曲家出現並席捲了PHP軟件包管理世界時,情況發生了變化。由於其某些規則,文件夾通常會重複,並且在通過作曲家查看PSR-0類安裝時變得太深了。例如,某些文件夾結構最終以這樣的方式出現:
這充其量是混亂的,因為:
vendor/ vendor_name/ package_name/ src/ Vendor_Name/ Package_Name/ ClassName.php # Vendor_Name\Package_Name\ClassName tests/ Vendor_Name/ Package_Name/ ClassNameTest.php # Vendor_Name\Package_Name\ClassNameTest
>“ SRC”和“測試”目錄必須包括供應商和軟件包目錄名稱。這是PSR-0符合性的工件。
>PSR-4旨在在必要時與PSR-0進行補充並與之合作,而不是完全替代它。它可以,但不必。 PSR-4的主要目標是完全刪除PSR-0和5.3天前的殘餘物,並允許更簡潔的文件夾結構。使用PSR-4,上述文件夾將看起來像這樣:因此,一些高素質的PHP開發人員聚集在一起,為新標準提出了建議:PSR-4。
> psr-4
因為PSR-0不允許在類名稱的任何部分之間進行插圖
vendor/ vendor_name/ package_name/ src/ ClassName.php # Vendor_Name\Package_Name\ClassName tests/ ClassNameTest.php # Vendor_Name\Package_Name\ClassNameTest
>這非常重要 - 這意味著實施PSR-4雖然允許更清潔的軟件包,但實施將變得更加複雜。我們稱呼為PSR-4包裝的自動加載,因為它有利於簡單之前的包裹清潔度。
>建議的目標如下:保留所有軟件包必須至少包含兩個命名空間級別(供應商和軟件包)的PSR-0規則,請確保供應商包裝組合可以映射到任何文件夾,並允許使用fifix供應商包裝組合和其餘完全合格的班級名稱之間的文件夾。
>
此外,草案明確指出,PSR-4自動加載器絕不應僅僅因為可以註冊多個自動加載器而引起異常或引起錯誤,並且如果一個人未能加載班級,則應該給其他機會這樣做,而其他人則有機會這樣做- 投擲- 投擲錯誤並停止流量破壞了此兼容性。如果需要有關故障的其他信息,則應使用PSR-3兼容記錄器或其他任意手段。
如示例文件中所示,使用PSR-4自動加載器從以下結構加載類:
看起來像這樣:
在其中調用新的foobarquxquux;將嘗試從第一個註冊目錄加載,而新的foobarquxquuxtest;將嘗試從第二個加載。
vendor/ vendor_name/ package_name/ src/ Vendor_Name/ Package_Name/ ClassName.php # Vendor_Name\Package_Name\ClassName tests/ Vendor_Name/ Package_Name/ ClassNameTest.php # Vendor_Name\Package_Name\ClassNameTest
此示例還說明了每個單個名稱空間的多個文件夾的使用。
>vendor/ vendor_name/ package_name/ src/ ClassName.php # Vendor_Name\Package_Name\ClassName tests/ ClassNameTest.php # Vendor_Name\Package_Name\ClassNameTest
自動加載中沒有銀色子彈。每種方法都帶來了一些優點和缺點 - PSR-4將允許更簡單的文件夾結構,但僅通過查看完全合格的名稱就可以阻止我們知道班級的確切路徑。另一方面,PSR-0在硬盤驅動器上是混亂的,但是支持過去陷入困境的開發人員(一流的名稱用戶),並通過查看其名稱來幫助我們辨別班級的位置。
>您對PSR-4的感覺如何?在下面的評論中讓我們知道,或在眾多辯論之一中表達您的意見。
> PSR-0和PSR-4之間的主要區別在於它們處理名稱空間和目錄結構的方式。 PSR-0需要名稱空間與目錄結構之間的直接相關性,這意味著命名空間中的每個凸起都對應於目錄分離器。另一方面,PSR-4允許採用更靈活的方法,其中一部分名稱空間可以映射到任何目錄,其餘的名稱空間可以映射到子目錄結構。引入PSR-4時引入的PSR-4?引入了PSR-4,以克服PSR-0的某些局限性。 PSR-0在名稱空間和目錄結構之間的嚴格相關性導致了深度嵌套的目錄,這並不總是實用或有效的。 PSR-4提供了一種更靈活的方法,使開發人員可以將命名空間映射到任何目錄,從而減少了對深目錄嵌套的需求。
> PSR-4在PSR-0上如何改善?通過提供更靈活的自動加載方法,PSR-4在PSR-0上有所改善。它允許開發人員將一部分名稱空間映射到任何目錄,從而減少對深目錄嵌套的需求。這使得管理和瀏覽項目的目錄結構變得更加容易。
以上是自動加載戰:PSR-0對PSR-4的詳細內容。更多資訊請關注PHP中文網其他相關文章!