spl_autoload_register()的用法:
其中$this表示當前類,autoload()是我注冊的自動加載函數,當然這個只是一個函數名,只要不與php的關鍵字重復,符合一般函數名的命名規范即可。
使用自動加載之后,當我們在一個類中需要加載很多個其它類文件時,不用頻繁使用require()函數,這樣代碼看起來更加規范,至于性能上是否有很大提升這個需要研究一下php的內核。
?
php是靠zend 引擎解析程序的,zend引擎中存在SPL__autoload棧,當你使用spl_autoload_register()將一個函數注冊為自動加載函數之后,同時激活該棧中的函數。即使你的程序中使用的函數名是__autoload(php中帶__的方法為魔術方法),也必須使用spl_autoload_register()函數顯示注冊到__autoload棧中。因為spl_autoload_register()會將Zend Engine中的__autoload函數取代為spl_autoload()或spl_autoload_call()。每當你實例化一個不存在的類時,SPL? autoload通過將函數指針autoload_func指向你實現的具有自動裝載功能的函數。SPL有兩個不同的函數spl_autoload,? spl_autoload_call,通過將autoload_func指向這兩個不同的函數地址來實現不同的自動加載機制。便會觸發這個函數加載對應的類文件,這樣便達到一個‘自動化’的效果,全世界都在追求自動化,程序也不例外呀。