ThinkPHP框架完全解析三

第三步:Think類的實現之類的自動加載

上回講到調用Think類中的start函數,這個函數是一個靜態函數,因此,不需要初始化便能夠被調用。這次,就來分析一下這個start函數有什麼功能。

第一行代碼是:

spl_autoload_register('Think\Think::autoload');

這行代碼的功能是自動加載類功能。傳遞的是Think名字空間下的Think類中autoload這個函數。

默認呢的自動加載函數是_autoload,這個函數有一個參數,用來接送類名。

我們現在Think中的代碼是這樣子的:


未來演示自動加載類函數的功能,我們再在index.php中修改成這個樣子:


運行下,便會發現,網站輸出了abc這三個字,而這三個字,正是我們在index.php中所調用到的類名。因爲從運行到現在,還沒有加載過一個名爲abc的類,因此,當php檢測到沒有這個類,他就會autoload這個函數。而我們在autoload函數中,所要做的事情,無非就是檢測類文件在哪個地方,然後把這個類文件給include或者是require進來。

綜合下來,autoload這個函數大體就是這個模樣:

 

因爲在這個函數中需要使用到APP_PATH這個常量,本來,應該在我們的ThinkPHP.php這個文件中導如這個常量的,但是爲了讓用戶能夠自定義應用目錄名,這個就需要用戶自己定義了:


當然,爲了防止用戶忘記輸入錯誤,我們也應該在我們的ThinkPHP中,添加一行代碼內容,防止此類問題出現:


現在的ThinkPHP.php變成爲:


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章