首先這裡要了解psr,proposing a standards recommendation(提出標準建議)的縮寫,就是一種php開發規範,讓我們研發出來的**更合理、更好維護、可讀性更高。psr有下面幾個標準:
這裡看出psr的下標也是從0開始的,和陣列還有點像~。其實psr-4和psr-0是有點相似甚至冗餘的,他們都說明的是自動載入的規範,只不過psr-4中的規範更加簡潔,在psr-0中下劃線"_"是有特殊含義的,在autoload處理的時候需要將下劃線轉換為目錄分隔符,而在psr-4中下劃線是沒有任何特殊含義的,所以在檔案自動載入的時候顯得更加簡潔、調理更加清楚。
我對github上面的psr-4規範中的例子進行了大概的翻譯(相信你們的英語水平一定比我好,肯定可以看懂^_^),然後以這個自動載入類庫做了乙個小小的例子,例子檔案多、長,放在這裡不太合適,所以我在部落格中就大概介紹下這個例子,想要詳細了解的可以去我的github主頁去看這個例子。
首先看下自動載入類的大概內容:
classautoload
1其實有疑惑的地方可能也只有乙個,那就是為什麼這裡要迴圈著去試圖查詢檔案,在while迴圈中,會慢慢的縮短命名空間字首的名稱去需找合適的命名空間字首,為什麼要這麼做呢?public
function loadclass($class)2
2021
//移動命名空間和relative class分割位置到下乙個位置
22$prefix = rtrim($prefix, '\\'); 23}
2425
//未找到試圖載入的檔案
26return
false
;27 }
當乙個檔案在乙個命名空間下的子目錄下的時候,我們不用去新建命名空間字首就可以成功載入需要的檔案,維護命名空間字首的陣列內容更少,更好維護。相反的如果沒有迴圈查詢,就是下面這個樣子的
每次新建乙個子目錄就要去新加乙個命名空間字首,是不是很麻煩,但這樣的話也有一定的好處,就是載入的時候不暈迴圈查詢檔案,可能會減小一定的時間消耗,但就是載入的時候有點麻煩。
所以,用迴圈載入這種方式還是比較方便的,但是一定不能讓沒有命名空間字首的目錄層級太深,這樣會消耗不必要的時間到檔案載入上。當需要效率很高的時候,而我們的目錄肯定又不會不確定,這個時候載入的時候去掉迴圈查詢,而是為每個目錄新增命名空間,效率可能會提高,只是我的一點愚見。
說道這裡你可能已經對自動載入的內容比較了解了,這個時候趁熱打鐵看看我準備的小例子,這裡只是介紹下小例子的目錄結構,由於比較簡單,詳細的內容就不再這裡列了,感興趣的通許可以去我的github主頁看看這個例子
PSR 4 自動載入
翻譯自 這個 psr 描述的是通過檔案路徑自動載入類的指南,它作為對 psr 0 的補充 根據這個來規範存放檔案以實現自動載入 術語class包含類class,介面inte ce,特性traits以及其他一些類似的結構 乙個完整的限定類名應該按照如下範例 當通過乙個完整的限定類名引入乙個檔案時 自動...
PSR 4 自動載入
autoloader 本 psr 是關於由檔案路徑 自動載入 對應類的相關規範,本規範是可互操作的,可以作為任一自動載入規範的補充,其中包括 psr 0,此外,本 psr 還包括自動載入的類對應的檔案存放路徑規範。2.詳細說明 此處的 類 泛指所有的class類 介面 traits可復用 塊以及其它...
PSR4自動載入
psr描述了類名和檔案路徑自動載入。1 class 指的是 class inte ce trait 以及其他類似結構體 2 乙個合格的類名應該是下面格式 必須有乙個頂級命名空間 可以包括一級或多級子命名空間的名字 必須包括乙個最終的類名 下劃線在這裡沒有任何特殊含義 類名大小寫敏感 3 例子 完整合...