PHP 類檔案的自動載入機制 __autoload()
如果一個類在多個指令碼中都需要使用,可以將一個類的定義程式碼,單獨的封裝到一個檔案中,這種檔案也叫作類檔案,在需要的時候,將整個檔案載入進來即可!
PHP在執行的時候,如果發現需要一個類(只要是和這個類相關的任何的操作),但此時當前指令碼又沒有這個類的定義程式碼,也沒有手動載入這個類檔案,那麼,PHP會自動的呼叫一個名字叫作__autoload($class_name)函式,呼叫的時候,會給該函式傳遞一個引數,該引數就是當前所需要的類的類名!
此時,未引入Student.class.php這個類檔案,用__autoload()函式自動呼叫需要載入的檔案!
這樣做的最大好處就是在一個指令碼中只需要載入一個檔案就行了,但是也有一個很大的弊端,就是會有很多多餘的類
一般的,系統預設的自動載入函式就是__autoload(),但是隨著專案規模的擴大,有可能出現多個自動載入函式,比如載入的檔案裡面又有自動載入函式!此時就出現了函式重名的問題了!
第一步:定義一個可以載入類檔案的普通函式
但是,此時系統不會自動的呼叫f1函式!
第二步:將該普通函式註冊成自動載入函式
此時,需要使用一個系統函式來完成:
spl_autoload_register(‘function_name’)
有一個引數,就是函式的名字!
結果如下
object(Student)#1 (1) {["stu_name"]=>NULL}