在學習php的物件導向的時候,會知道很多「語法糖」,也就是魔術方法。有乙個加自動載入的魔術方法,叫:__autoload();
先看一段**
<?php function __autoload($classname)
new a();
這裡例項化了乙個a類,但在**塊中沒有a類的相關**,按常理是應該會報錯,因為沒有找到對應的a類,但如果你使用了autoload()自動載入函式的話,結果就可以能不一樣
從上面的流程圖:在頁面例項化乙個新類,就會先在當前目錄找對應的類**,如果沒有就去autoload堆疊找對應的自動載入函式,如果有的話就自動載入該類,沒有話就丟擲錯誤。
這是php自動載入的乙個機制。然後重點在後面。如果我有多個自動載入的函式,怎麼辦!
php提www.cppcns.com供了乙個spl函式
spl_autoload_register(); // 註冊autoload函式
官方:spl_autoload_register() 提供了一種更加靈活的方式來實現類的自動載入。因此,不再建議使用 __autoload() 函式,在以後的版本中它可能被棄用。
然而在phpexecl 和 phpword 裡面都使用到了 這個函式來做自動載入,但兩者有區別!!
phpexecl 自動載入的方法(這裡作者估計是python工程師,不然花括號都沒有,用縮進來表示)
public static function register()
phpword 自動載入的方法
public static function register() www.cppcns.com
這兩種方法,都可以完成重定義自動載入,但有區別? 如果是獨立執行**,兩種情況都可以執行,但要是整合到框架中,比如yii框架。那麼phpword的自動載入就無效了。
因為yii框架自動帶有自動載入函式,而且再**執行的時候就已經註冊了,而spl_autoload_register()會將新的自動載入函式,www.cppcns.com載入autoload佇列的後面。所有phpword在執行的時候
就呼叫的是yii框架定義的自動載入機制,而且不是phpword這種載入方式。
所以反過來看phpexecl的載入函式,你就明白了。
PHP自動載入機制
自動載入機制的主要執行過程 1 檢查執行器全域性變數函式指標autoload func是否為null。2 如果autoload func null,則查詢系統中是否定義有 autoload 函式,如果沒有,則報告錯誤並退出。3 如果定義了 autoload 函式,則執行 autoload 嘗試載入類...
php 自動載入機制
一 基礎了解。1 php引入檔案使用include與require,這兩個的區別在於,include可以在 執行過程中再引入,而require是需要在 執行前就進行引入操作。2 命名空間。引入命名空間的作用是為了規避掉因為重名而引發的混亂與錯誤。可以把命名空間理解為乙個箱子,不同的箱子都可以有蘋果,...
PHP物件導向自動載入類檔案
php實現類自動載入有兩種方法 一 autoload autoload是php中的魔術變數 在執行php指令碼中遇到呼叫不存在類時會自動呼叫該方法 例 這裡有兩個檔案 class demo1 class demo2 現在demo1.php 用到 demo2.php檔案 檔案 require once...