1. 程式人生 > >PHP自動加載機制

PHP自動加載機制

編程 auto 自動 reg 推出 多次 方法 mage nbsp

類的載入共經歷了三個階段

第一階段是面向過程式的做法,整個項目裏到處都是include或require。

技術分享

問題:難看,不易維護。

.

第二階段是魔術方法__autoload,當new一個類的時候,如果類不存在,則會調用此方法傳入類名。

技術分享

技術分享

如今很多框架都已經采用PSR-4規範化編程
示例:

技術分享

也就是說 命名空間加上類名 就等於該類的文件路徑 轉義一下反斜線拼上後綴名
如下

技術分享

autoload機制可以使得PHP程序在使用類時才自動包含文件,而不是一開始就將所有的類文件全部包含,這就是自動加載。

技術分享

問題:如今的項目越做越大,多人開發最終整合,甚至一個項目使用多個框架,這樣就導致出現多個__autoload函數,函數名報錯,函數內容不兼容。

第三階段是目前的做法,PHP推出了spl_autoload_register方法,該方法可以註冊一個autoload,並且可以多次註冊。

技術分享

有多種寫法,各大PHP框架中都能找到自動加載身影。

技術分享

註冊的函數會進入隊列中,多次註冊時,先進先出,加載成功則終止,加載失敗會繼續調用隊列中下一個被註冊的函數。

技術分享

PHP自動加載機制