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