5.16日(rì)音(yīn)訊,程序開(kāi)發中php實現(xiàn)∏™自(zì)動加載
日(rì)期:2013-05-16發布:首創網絡浏覽:583次
5.16日(rì)音(yīn)訊,程序開(kāi∑Ω✘)發中php實現(xiàn)自(zì)動加載。在使用(yòng)PHP $®的(de)OO模式開(kāi)發系統時(shí),通(tōng)常大(d♣<δà)家(jiā)習(xí)慣上(shàng)将每個(gè)類的(de₩←)實現(xiàn)都(dōu)存放(fàng)在一(yī)個(gè)↓≤∞單獨的(de)文(wén)件(jiàn)裡(lǐ),這(zhè)樣會(h£™÷♣uì)很(hěn)容易實現(xiàn)對(duì)類進行(xíng)複用(y↑™òng),同時(shí)将來(lái)維護時(shí)也(yě)π♠λ>很(hěn)便利。這(zhè)也(yě)是(σγφ↑shì)OO設計(jì)的(de)基本思想之♦♦ 一(yī)。在PHP5之前,如(rú)果需要(→∞'yào)使用(yòng)···
本文(wén)關鍵字:5.16日(rì),音(yīn" )訊,程序開(kāi)發,中,php,實現¶✔₽$(xiàn),自(zì)動,加載,
5.16日(rì)音(yīn)訊,程序₹×π↔開(kāi)發中php實現(xiàn)自(zì)動加載。在使用÷εβ (yòng)PHP的(de)OO模式開(kāi)發系統時(shí™÷εε),通(tōng)常大(dà)家(jiā)習(xí)慣上(shàng∑≥)将每個(gè)類的(de)實現(xiàn)都(dōu)存放(fàng)✘γλ在一(yī)個(gè)單獨的(de)文(w↔✔én)件(jiàn)裡(lǐ),這(zhè)樣會(huì ÷ )很(hěn)容易實現(xiàn)對(duì)類進行(xíng)£↓<φ複用(yòng),同時(shí)将來(lái)維護時(shí)也∏φ(yě)很(hěn)便利。這(zhè)也(yě)是(sh☆₹₩ì)OO設計(jì)的(de)基本思想之一(€←♥yī)。在PHP5之前,如(rú)果需要(yào)使用(yòng)一(yī"✘≥)個(gè)類,隻需要(yào)直接使用(yòng)includ★✔₽e/require将其包含進來(lái)即可(kěΩ<₩"),使用(yòng)require,in☆∑★>clude,require_once,include§β_once手工(gōng)進行(xíng)加載。
使用(yòng)__autoload來(lái)進行(xíng)"✘Ω 自(zì)動加載
使用(yòng)spl的(de)autoε≠load來(lái)實現(xiàn)自(zì)動₹♥&加載
手工(gōng)加載的(de)實現(xiàn):
當需要(yào)加載的(de)文(wén)件(jiànα→)很(hěn)少(shǎo)的(de)時(shí)候我們可(k₽♥≤δě)以使用(yòng)第一(yī)個(gè)來(lái)完成。★≤™這(zhè)樣做(zuò)很(hěn)簡單也(yě)沒問(wè≥±β™n)題。
[php]
require_once'a.php';
require_once'b.php';
require_once'c.php';
require_once'a.php'↑';
require_once'b.php' ★;
require_once'c.php' σδ;
但(dàn)是(shì)當需要(yào)加載文(wén)©€件(jiàn)很(hěn)多(duō)的(de)時β¶(shí)候這(zhè)樣做(zuò)還(hái)行(xí₹≤←ng)嗎(ma)?需要(yào)寫十個(gè),二十©∞ ¥個(gè)require_once或者更多(duō)的(≠ αde)時(shí)候我們該怎麽辦?
這(zhè)個(gè)時(shí)候< 我們可(kě)以使用(yòng)__autoload方法來(lái)簡化(h ∞®uà)我們的(de)代碼。
__autoload加載的(de)實現(☆☆☆φxiàn):
我們在test目錄下(xià)創建一(yī)個(gè)in.php文(₹÷ε>wén)件(jiàn),內(nèi)容如(rú∏₽ )下(xià)。
[php]
echo'我是(shì)test下(xià)面的(de)in.php↕
';
echo'我是(shì)test下(xià£<€)面的(de)in.php
';然後在test目錄下(xià)創建一(yī)★γ個(gè)loader.php,內(nèi)容如(r≤←§ú)下(xià)。
[php]
//需要(yào)重載__autoload↕♦"方法,自(zì)定義包含類文(wén)件(jiàn)的(de)路♣♥(lù)徑
function__autoload($class∞™γname)
{
$class_file=strtolower($class∞λ"₽name).".php";
if(file_exists($class_file)){
require_once($class_fi♦α≤le);
}
}
@$test=newin();//執行(xíng)到∏§•(dào)這(zhè)裡(lǐ)會(huì)輸出
//需要(yào)重載__autoload方法,自(zì)定義包→∑ε含類文(wén)件(jiàn)的(de)路(lù)徑
function__autoload($classname)
{
$class_file=strtolower($classnam¶•e).".php";
if(file_exists($class_β<♥file)){
require_once($class_file);
}
}
@$test=newin();//執行(xíng)到(dào'↑)這(zhè)裡(lǐ)會(huì)輸出我是(shì)t≈γαλest下(xià)面的(de)in.php沒問(wèn)題,成功了(l☆β e)!我們還(hái)可(kě)以創建其他(tā)的(de)文(wén)件(j λ↑iàn)來(lái)進行(xíng)加載,但(dàn÷✔₩)是(shì)當需要(yào)的(de)文(w©©én)件(jiàn)很(hěn)多(duō)需要(yào)區(qū)δ≥♥±分(fēn)目錄的(de)時(shí)候怎麽辦?
這(zhè)時(shí)我們需要(yà±£o)修改loader.php可(kě)以使用(yòng)映€$Ω射來(lái)找到(dào)要(yào)加載的(de)文γ$(wén)件(jiàn)。
[php]
function__autoload($c¥βlass_name){
$map=array(
'index'=>'./inclu≠↑←'de/index.php',
'in'=>'./in.php'
);
if(file_exists($map[$cl≥φass_name])&&isset($m≥φ&ap[$class_name])){
require_once$map[$class_nameδα¥];
}
}
newindex();
function__autoload($claα'¥ss_name){
$map=array(
'index'=>'./include/index.php',
'in'=>'./in.php'
);
if(file_exists($map[$cl™÷§ass_name])&&isset($m≠£ap[$class_name])){
require_once$map[$class_name];≈β≠
}
}
newindex();
這(zhè)種方法的(de)好(hǎo)處就γ↔↓>(jiù)是(shì)類名和(hé)文(wén)件(jiàn)路(÷≈≤lù)徑隻是(shì)用(yòng)一(y∞♥α↔ī)個(gè)映射來(lái)維護,所以當文(wén)件←↔(jiàn)結構改變的(de)時(shí)候♦$,不(bù)需要(yào)修改類名,隻需要(yào)将映射中對(duì)應™♦∏的(de)項修改就(jiù)好(hǎo)了(ε♦le)。
但(dàn)是(shì)__autε≠₽oload在一(yī)個(gè)項目中隻能(néng)使用γ♥Ω(yòng)一(yī)次,當你(nǐ)的(de)項目引用(yòng)了(£≤<σle)别人(rén)的(de)一(yī)個(gè)項目,你(nǐ)的(¥®§de)項目中有(yǒu)一(yī)個(gè)__autolo£λ←∞ad,别人(rén)的(de)項目也(yě)有(yǒu)一(y£≈εī)個(gè)__autoload,這(zh®✘♠↔è)樣兩個(gè)__autoload就(j₩$iù)沖突了(le).解決的(de)辦法就(♠'←jiù)是(shì)修改__autoload成為(wèi)一(yī)個(gè)¥←₽✔,這(zhè)無疑是(shì)非常繁瑣的(de),應σ₽↕用(yòng)場(chǎng)景單一(yī)。
spl的(de)autoload加載實現(xiàn):
spl的(de)autoload系列函數(shù)使用(yòng)一→¥≥§(yī)個(gè)autoload調用(yòng★☆φ)堆棧,你(nǐ)可(kě)以使用(yòng)spl_autoloa✘γd_register注冊多(duō)個(gè)自✔Ω≥(zì)定義的(de)autoload函數(shù),應用(yòng)場(ch®<✘ǎng)景廣泛
- 歡迎大(dà)家(jiā)閱讀(dú)浏覽,部分(fēn)內(nèi)容來≠≠(lái)源于網絡,如(rú)有(yǒu)侵權,請(qǐng)聯系我們删除€∞!
- 上(shàng)一(yī)條:5.15日(rì)音(yīn)訊,網頁中border三角知(zhī)識詳解
- 下(xià)一(yī)條:5.16日(rì)音(yīn)訊,jQuery須掌握的(de)幾個(gè"φ)要(yào)點
服務項目
熱(rè)門(mén)信息
- 邯鄲網絡公司:模闆建站(zhàn)的(de)好(hǎo)處有( ≥yǒu)哪些(xiē)?
- 3642024-04-25

- 4.9日(rì)訊,企業(yè)網站(zhàn)建設如(rú)何發揮網絡營銷≤&功能(néng)?
- 4092024-04-09

- 邯鄲網絡公司:網站(zhàn)建設開(kāi)發有(yǒα₹←u)哪些(xiē)細節需要(yào)注意?
- 5402024-03-07

- 邯鄲網絡公司:外(wài)貿網站(zhàn)制(zhì)作(zuò)'×♦的(de)8個(gè)步驟
- 3772024-03-05

- 簡單3步,輕松做(zuò)企業(yè)官網
- 6822024-02-18
