PHP實(shí)現(xiàn)懶加載的方法_PHP教程
推薦:php根據(jù)某字段對(duì)多維數(shù)組進(jìn)行排序的方法這篇文章主要介紹了php根據(jù)某字段對(duì)多維數(shù)組進(jìn)行排序的方法,實(shí)例分析了php操作數(shù)組及排序的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下 本文實(shí)例講述了php根據(jù)某字段對(duì)多維數(shù)組進(jìn)行排序的方法。分享給大家供大家參考。具體分析如下: 根據(jù)某字段對(duì)多維數(shù)組進(jìn)行排
這篇文章主要介紹了PHP實(shí)現(xiàn)懶加載的方法,實(shí)例分析了php加載的原理與懶加載的實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
本文實(shí)例講述了PHP實(shí)現(xiàn)懶加載的方法。分享給大家供大家參考。具體分析如下:
尋常php的加載是通過include(),require()等方法來加載外部文件,之后再通過實(shí)例調(diào)用方法或直接調(diào)用靜態(tài)方法,而這樣子寫引入語句實(shí)在很麻煩,有的框架會(huì)將特定路徑的文件全部引入,直接實(shí)例化就能使用,但這樣一來有的類包不一定用到,寫的類包越多的時(shí)候,加載的東西就不少了,影響程序的性能。
通過PHP的反射類 ReflectionClass 可以直接獲得對(duì)應(yīng)類的一個(gè)反射類:
test.php文件如下:
?index.php文件如下:
?實(shí)例化一個(gè) ReflectionClass,并傳類名進(jìn)去,就會(huì)得到一個(gè)對(duì)應(yīng)類的反射類。用實(shí)例調(diào)用 newInstance就會(huì)得到反射類的實(shí)例,這樣就完成了實(shí)例化。
通過 get_included_files() 方法,我們可以看到當(dāng)前頁面引入的文件。在實(shí)例化反射類前,只有index.php文件,實(shí)例化反射類后,自動(dòng)引入了一個(gè)test.php文件,那么看下上面那段代碼,發(fā)現(xiàn)有個(gè)__autoload()名字的魔術(shù)方法,這方法就定義了自動(dòng)加載文件,而ReflectionClass在當(dāng)前頁面找不到類時(shí),就會(huì)調(diào)用__autoload()去加載類。這就是自動(dòng)加載的過程。
想知道__autoload()方法有沒有開啟,可以通過PHP的標(biāo)準(zhǔn)庫SPL中的方法來查看:
?sql_autoload_functions() 方法是用來查看當(dāng)前自動(dòng)加載的方法,當(dāng)前有個(gè)__autoload魔術(shù)方法,所以返回了函數(shù)名,若沒定義自動(dòng)加載方法的話,返回的是false,而 spl_autoload_register() 方法是通過方法名將一個(gè)方法注冊(cè)到自動(dòng)加載方法,這里用newAutoload方法來替換__autoload方法。
newAutoload方法中,每執(zhí)行成功一次,打印一句'require success',這里只打印了一次,說明了雖然實(shí)例了3次ReflectionClass('test'),但因?yàn)閠est類已經(jīng)加載過一次,就不會(huì)再執(zhí)行自動(dòng)加載的方法。通過getInstance()這種加載類的方法,比以前的include()之類的方便多了,只需要加載這個(gè)寫了getInstance()方法的文件就可以了。
重寫的自動(dòng)加載方法可以根據(jù)需要,通過判斷類的名字,定義不同的文件路徑。getInstance可以用靜態(tài)變量保存實(shí)例,這也是使用到了設(shè)計(jì)模式中的單例模式。
希望本文所述對(duì)大家的php程序設(shè)計(jì)有所幫助。
分享:PHP多線程編程之管道通信實(shí)例分析這篇文章主要介紹了PHP多線程編程之管道通信,實(shí)例分析了管道通信的原理與相關(guān)使用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下 本文實(shí)例講述了PHP多線程編程之管道通信用法。分享給大家供大家參考。具體分析如下: 一個(gè)線程如果是個(gè)人英雄主義,那么多線程就是集體
- php根據(jù)某字段對(duì)多維數(shù)組進(jìn)行排序的方法
- PHP多線程編程之管道通信實(shí)例分析
- PHP查詢快遞信息的方法
- php實(shí)現(xiàn)漢字驗(yàn)證碼和算式驗(yàn)證碼的方法
- php實(shí)現(xiàn)俄羅斯乘法實(shí)例
- php實(shí)現(xiàn)發(fā)送微信模板消息的方法
- PHP模擬登陸163郵箱發(fā)郵件及獲取通訊錄列表的方法
- Laravel 5 學(xué)習(xí)筆記
- ThinkPHP3.2.2的插件控制器功能
- ThinkPHP3.2.3數(shù)據(jù)庫設(shè)置新特性
- ThinkPHP 3.2 版本升級(jí)了哪些內(nèi)容
- thinkPHP學(xué)習(xí)筆記之安裝配置篇
- 相關(guān)鏈接:
- 教程說明:
PHP教程-PHP實(shí)現(xiàn)懶加載的方法。