php的自動載入:
在php5以前,我們要用某個類或類的方法,那必須include或者require,之後才能使用,每次用乙個類,都需要寫一條include,麻煩
php作者想簡單點,最好能引用乙個類時,如果當前沒有include進來,系統能自動去找到該類,自動引進~
於是:__autoload()函式應運而生。
通常放在應用程式入口類裡面,比如discuz中,放在class_core.php中。
先講淺顯的例子:
第一種情況:檔案a.php中內容如下
<?php
class a
}
$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{
function __autoload($class){ //如果不是,則重寫php原生函式__autoload函式,讓其呼叫自己的core中函式。
return core::autoload($class);
這段扔在入口檔案最前面,自然是極好的~
**:
PHP的類自動載入機制
在 php開發過程中,如果希望從外部引入乙個class,通常會使用include和require方法,去把定義這個class的檔案包含進來。這個在小 規模開發的時候,沒什麼大問題。但在大型的開發專案中,這麼做會產生大量的require或者include方法呼叫,這樣不因降低效率,而且使得 難 以維護...
PHP的類自動載入機制
在php開發過程中,如果希望從外部引入乙個class,通常會使用include和require方法,去把定義這個class的檔案包含進來。這個在小規模開發的時候,沒什麼大問題。但在大型的開發專案中,這麼做會產生大量的require或者include方法呼叫,這樣不因降低效率,而且使得 難以維護,況且...
PHP的類自動載入機制
在php開發過程中,如果希望從外部引入乙個class,通常會使用include和require方法,去把定義這個class的檔案包含進來。這個在小規模開發的時候,沒什麼大問題。但在大型的開發專案中,這麼做會產生大量的require或者include方法呼叫,這樣不因降低效率,而且使 得 難以維護,況...