類的載入共經歷了三個階段
第一階段是程式導向式的做法,整個專案裡到處都是include或require。
問題:難看,不易維護。
.
第二階段是魔術方法__autoload,當new一個類的時候,如果類不存在,則會呼叫此方法傳入類名。
如今很多框架都已經採用PSR-4規範化程式設計
示例:
也就是說 名稱空間加上類名 就等於該類的檔案路徑 轉義一下反斜線拼上字尾名
如下
autoload機制可以使得PHP程式在使用類時才自動包含檔案,而不是一開始就將所有的類檔案全部包含,這就是自動載入。
問題:如今的專案越做越大,多人開發最終整合,甚至一個專案使用多個框架,這樣就導致出現多個__autoload函式,函式名報錯,函式內容不相容。
第三階段是目前的做法,PHP推出了spl_autoload_register方法,該方法可以註冊一個autoload,並且可以多次註冊。
有多種寫法,各大PHP框架中都能找到自動載入身影。
註冊的函式會進入佇列中,多次註冊時,先進先出,載入成功則終止,載入失敗會繼續呼叫佇列中下一個被註冊的函式。