課程
/后端開發(fā)
/PHP
/從零開始打造自己的PHP框架
自動(dòng)加載那個(gè)判斷是否已經(jīng)加載是不是不必要的,因?yàn)槿绻呀?jīng)加載過是不會(huì)觸發(fā)load方法的吧?
2016-08-24
源自:從零開始打造自己的PHP框架
正在回答
主要是為了防止,跨方法和夸類的情況下發(fā)生重復(fù)引入的情況,畢竟作用域不一樣。比如 indexCtrl中的index方法使用了 new /model,在baseCtrl中再使用new /model是會(huì)重新出發(fā)load方法的。
茫海 提問者
李虎頭 回復(fù) 茫海 提問者
茫海 提問者 回復(fù) 李虎頭
/**關(guān)于那個(gè)autoload的問題,由于回復(fù)那里有字?jǐn)?shù)限制,我就另外開一個(gè)問題來回復(fù)您了*/ <?php /** *?index.php */ spl_autoload_register("load"); $test?=?new?Test();//第一次使用Test類,輸出:“開始load:Test....” Third::test();//第二次,在另外一個(gè)類的方法里面使用Test類,并不會(huì)輸出“開始load:Test....” test();//第三次在函數(shù)中使用Test,并不會(huì)輸出“開始load:Test....” function?load($class) { ????echo?"開始load:".$class."....<br/>"; ????require?$class.".php"; } function?test() { ????new?Test(); }
<?php /** *?Test.php */ class?Test { ???? }
<?php /** *?Third.p */ class?Third { ????public?static?function?test() ????{ ????????$test?=?new?Test(); ????} }
執(zhí)行結(jié)果如下圖所示:
最終只輸出了一次load:Test,也就是說只有在第一次使用Test的時(shí)候才會(huì)自動(dòng)調(diào)用load方法,后面再次使用Test并不會(huì)執(zhí)行l(wèi)oad了
舉報(bào)
和我一起開發(fā)一套屬于自己的PHP框架,自己開發(fā)的才是最好用的
1 回答為什么run方法還需要include文件呢,此時(shí)不是已經(jīng)觸發(fā)了spl_autoload_register自動(dòng)加載了嗎?
3 回答關(guān)于自動(dòng)加載
2 回答自動(dòng)加載 為什么不用 autoload 為什么要寫得那么復(fù)雜?
1 回答在加載控制器時(shí)為什么不使用自動(dòng)加載功能?
1 回答關(guān)于自動(dòng)加載對(duì)PHP效率的影響
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號(hào)-11 京公網(wǎng)安備11010802030151號(hào)
購課補(bǔ)貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網(wǎng)APP您的移動(dòng)學(xué)習(xí)伙伴
掃描二維碼關(guān)注慕課網(wǎng)微信公眾號(hào)
2016-08-25
主要是為了防止,跨方法和夸類的情況下發(fā)生重復(fù)引入的情況,畢竟作用域不一樣。比如 indexCtrl中的index方法使用了 new /model,在baseCtrl中再使用new /model是會(huì)重新出發(fā)load方法的。
2016-08-26
執(zhí)行結(jié)果如下圖所示:
最終只輸出了一次load:Test,也就是說只有在第一次使用Test的時(shí)候才會(huì)自動(dòng)調(diào)用load方法,后面再次使用Test并不會(huì)執(zhí)行l(wèi)oad了