php的自動載入:
在php5以前,我們要用某個類或類的方法,那必須include或者require,之後才能使用,每次用乙個類,都需要寫一條include,麻煩
php作者想簡單點,最好能引用乙個類時,如果當前沒有include進來,系統能自動去找到該類,自動引進~
於是:__autoload()函式應運而生。
通常放在應用程式入口類裡面,比如discuz中,放在class_core.php中。
先講淺顯的例子:
第一種情況:檔案a.php中內容如下
<?php class a
}?>
檔案c.php 中內容如下:
<?php function __autwww.cppcns.comoload($class)
} $a = new a(); //這邊會自動呼叫__autoload,引入a.php檔案
?>
第二種情況:有時我希望能自定義autoload,並且希望起乙個更酷的名字loader,則c.php改為如下:
<?php function loader($class)
}spl_autoload_register('loader'); //註冊乙個自動載入方法,覆蓋原有的__autoload
$a = new a();
?>
第三種情況:我希望高大上一點,用乙個類來管理自動載入
<?php class loader
} } spl_autoload_register(array('loader', 'loadclass'));
$a = new a();
?>
當前為最佳形式。
通常我們將spl_autoload_register(*)放在入口指令碼,即一開始就引用進來。比如下面discuz的做法。
if(function_exist('spl_autoload_register'))else
}這段扔在入口檔案最前面,自然是極好的~
本文標題: 深入理解php類的自動載入機制
本文位址:
PHP的類自動載入機制
在 php開發過程中,如果希望從外部引入乙個class,通常會使用include和require方法,去把定義這個class的檔案包含進來。這個在小 規模開發的時候,沒什麼大問題。但在大型的開發專案中,這麼做會產生大量的require或者include方法呼叫,這樣不因降低效率,而且使得 難 以維護...
PHP的類自動載入機制
在php開發過程中,如果希望從外部引入乙個class,通常會使用include和require方法,去把定義這個class的檔案包含進來。這個在小規模開發的時候,沒什麼大問題。但在大型的開發專案中,這麼做會產生大量的require或者include方法呼叫,這樣不因降低效率,而且使得 難以維護,況且...
PHP的類自動載入機制
在php開發過程中,如果希望從外部引入乙個class,通常會使用include和require方法,去把定義這個class的檔案包含進來。這個在小規模開發的時候,沒什麼大問題。但在大型的開發專案中,這麼做會產生大量的require或者include方法呼叫,這樣不因降低效率,而且使 得 難以維護,況...