在之前,我們已經學習過composer自動載入的原理,其實就是利用了php中的類自動載入的特性。在文末有該系列文章的鏈結。
php中類的自動載入主要依靠的是__autoload()和spl_autoload_register()這兩個方法。今天我們就來簡單的看一下這兩個方法的使用。
做為乙個已經快要被淘汰的魔術方法,我們只需要了解即可。如果在php7中使用這個方法的話,會報出過時的警告,系統會建議我們使用spl_autoload_register()方法。
function __autoload($name)
$autoa = new autoa();
var_dump($autoa);
當我們例項化autoa類時,當前的檔案並沒有這個類,也沒有從其他檔案中include或者require,這時,就會自動進入魔術方法__autoload()中。我們在__autoload()方法中只需要去include這個類所在的檔案即可。
這個方法目前已經替代了上述魔術方法自動載入類的功能。它是spl擴充套件庫中的乙個方法,spl擴充套件庫現在已經預設整合在了php中,大家可以放心地直接使用。
spl_autoload_register()相對於__autoload()的好處是它可以去註冊乙個__autoload(),並且實現並維護了乙個__autoload()佇列。原來在乙個檔案中只能有乙個__autoload()方法,但現在,你擁有的是乙個佇列。
這樣,你就不需要將所有載入**都寫在乙個__autoload()方法中,而是可以使用多個spl_autoload_register()去單獨進行每個類的載入處理。
spl_autoload_register(function($name));
$autoa = new autoa();
var_dump($autoa);
參考:深入學習composer原理(二)
在自動載入中,我們只需要使用include就可以了,類並不會重複載入。
spl_autoload_register(function($name));
$autoa = new autoa();
var_dump($autoa);
$autoa = new autoa();
var_dump($autoa);
$autoa = new autoa();
var_dump($autoa);
$autob = new autob();
var_dump($autob);
從**中,我們可以看出$name在多次例項化類的情況下只被輸出了一次。所以並不需要關心會有類檔案重複載入的問題。而且在大型框架中使用composer的時候會載入非常多的類,_once方法也會帶來效率的問題。
測試**:
b站id:482780532
php自動載入類,PHP中類的自動載入的方法
類的自動載入是指,在外面的頁面中,並不需要去 引入 類檔案,但是程式會在需要的時候動態載入需要的類檔案。方法1 使用 autoload魔術函式 當程式需要某個類時,就會去呼叫該函式,該函式我們需要自己去定義並在其中寫好載入類檔案的通用語句。需要類是自動呼叫,而且會傳進來乙個類名,這個案例的檔名為21...
PHP中類的自動載入
首先認識乙個函式 spl autoload register 官方文件 spl autoload register 滿足了多條 autoload 的需求。它實際上建立了 autoload 函式的佇列,按定義時的順序逐個執行。相比之下,autoload 只可以定義一次。沒啥好說的,上段 functio...
PHP中類的自動載入
什麼是類的自動載入?類的自動載入是指 在其他的頁面中,要想使用其他的類檔案,並不需要去 引入 包含的類檔案,程式會在需要乙個類的時候自動去 動態載入 這個類。什麼情況下需要乙個類?建立乙個物件的時候 例項化 class apublic static jingtai obj newa 例項化a類直接使...