国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > PHP > 正文

PHP實現懶加載的方法

2024-05-04 21:55:04
字體:
來源:轉載
供稿:網友

 這篇文章主要介紹了PHP實現懶加載的方法,實例分析了php加載的原理與懶加載的實現技巧,具有一定參考借鑒價值,需要的朋友可以參考下

  

本文實例講述了PHP實現懶加載的方法。分享給大家供大家參考。具體分析如下:

尋常php的加載是通過include(),require()等方法來加載外部文件,之后再通過實例調用方法或直接調用靜態方法,而這樣子寫引入語句實在很麻煩,有的框架會將特定路徑的文件全部引入,直接實例化就能使用,但這樣一來有的類包不一定用到,寫的類包越多的時候,加載的東西就不少了,影響程序的性能。

通過PHP的反射類 ReflectionClass 可以直接獲得對應類的一個反射類:

test.php文件如下:

?

index.php文件如下:

?

實例化一個 ReflectionClass,并傳類名進去,就會得到一個對應類的反射類。用實例調用 newInstance就會得到反射類的實例,這樣就完成了實例化。

通過 get_included_files() 方法,我們可以看到當前頁面引入的文件。在實例化反射類前,只有index.php文件,實例化反射類后,自動引入了一個test.php文件,那么看下上面那段代碼,發現有個__autoload()名字的魔術方法,這方法就定義了自動加載文件,而ReflectionClass在當前頁面找不到類時,就會調用__autoload()去加載類。這就是自動加載的過程。

想知道__autoload()方法有沒有開啟,可以通過PHP的標準庫SPL中的方法來查看:

?

sql_autoload_functions() 方法是用來查看當前自動加載的方法,當前有個__autoload魔術方法,所以返回了函數名,若沒定義自動加載方法的話,返回的是false,而 spl_autoload_register() 方法是通過方法名將一個方法注冊到自動加載方法,這里用newAutoload方法來替換__autoload方法。

newAutoload方法中,每執行成功一次,打印一句'require success',這里只打印了一次,說明了雖然實例了3次ReflectionClass('test'),但因為test類已經加載過一次,就不會再執行自動加載的方法。通過getInstance()這種加載類的方法,比以前的include()之類的方便多了,只需要加載這個寫了getInstance()方法的文件就可以了。

重寫的自動加載方法可以根據需要,通過判斷類的名字,定義不同的文件路徑。getInstance可以用靜態變量保存實例,這也是使用到了設計模式中的單例模式。

希望本文所述對大家的php程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 庄河市| 毕节市| 门源| 嵩明县| 宁武县| 清远市| 水富县| 兰州市| 武宁县| 湄潭县| 隆子县| 星子县| 芦山县| 柞水县| 江口县| 和平县| 织金县| 保亭| 望谟县| 钟祥市| 开鲁县| 德安县| 白河县| 深圳市| 南开区| 漯河市| 门头沟区| 乐陵市| 马尔康县| 城市| 平陆县| 托克托县| 吉林市| 鸡东县| 乌海市| 南木林县| 榆中县| 屏南县| 准格尔旗| 兴山县| 大足县|