自動加載 spl_register_autoload

自動加載

在PHP代碼中,不需要顯式地使用文件路徑將類庫文件包含進來,便可使用該文件中定義的類庫,這種技術稱作自動加載。

使用spl_autoload_register()方法可以注冊多個autoload()函數,這在主流PHP框架中很常見,原因是:

  • __autoload()函數是全局唯一的,如果框架占了這個名字,便會導致框架的用戶用不了其它的__autoload()方法了,包括用戶自定義的和其它類庫帶的。spl_autoload_register()可以注冊多個autoload方法,不存在這個問題。
  • __autoload()是一個函數,在實際使用中,開發者勢必要賦予它一些變量(例如class path和下文要講到的class_name => file_path mapping數組)。這就只能靠全局變量(global variable)了,使用全局變量可不是好的編碼習慣。spl_autoload_register()可以將一個Class的某個方法注冊為autoload函數,如Symfony的spl_autoload_register(array(self::getInstance(), 'autoload')),和Lotusphp的spl_autoload_register(array($this, "loadClass"));

細說“PHP類庫自動加載”
PHP autoload 機制詳解
你所不知道的 PHP - 自動加載

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 在使用PHP的OO模式開發系統時,通常大家習慣上將每個類的實現都存放在一個單獨的文件里,這樣會很容易實現對類進行復...
    王興伍閱讀 530評論 0 0
  • 在PHP開發過程中,如果希望從外部引入一個class,通常會使用include和require方法,去把定義這...
    四月不見閱讀 1,079評論 0 0
  • 本文分為兩部分:第一部分講__autoload()函數實現的類自動加載。第二部分講spl_autoload_reg...
    舒小賤閱讀 2,583評論 1 4
  • spl_autoload_register() 函數可以注冊任意數量的自動加載器,當使用尚未被定義的類(class...
    他刪時閱讀 143評論 0 0
  • 第一個30天月度檢視 李鳳 基本情況# 姓名:王義浩 年齡:12歲 小組:第1組 #第一階段30天目標及完成情...
    鳳凰_c50d閱讀 315評論 0 0