新聞資訊
記錄首創點滴進步 見(jiàn)證遠(yuǎn)Ω×行(xíng)
我們一(yī)直緊跟時(shí)代前沿,聚焦行(xíng)業(yè)↑∞β©實時(shí)動态,發布公司最新資訊,歡迎您的(de)關注

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ì)輸出我是(shì)test下(xià)面的(£→de)in.php

  //需要(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)聯系我們删除€∞!

+ 查看(kàn)更多(duō)我們的(de)客戶 / Our client

    24小(xiǎo)時(shí)技(jì)術(shù)支持
    18931045623
    在線客服

首創簡介

    首創網絡成立于2012年(nián),是(shì)一(y↓•↕ī)家(jiā)專業(yè)的(de)品牌網站(z&<λhàn)設計(jì)和(hé)網絡營銷推廣公司¥≠¥,服務領域涵蓋網站(zhàn)設計(jì)、市(shì)場(chǎng)策∏✔劃、企業(yè)畫(huà)冊及VI視(shì)覺設§ 計(jì)、網站(zhàn)域名空(kōng)間(jiān)等領σσ♣₽域,公司擁有(yǒu)一(yī)批高(gāo)素質人(rén$∞★ )才,著(zhe)力打造品牌網站(zhàn‍>™¥)設計(jì)制(zhì)作(zuò)和(hé)網上(shàng)營銷策♥<略執行(xíng)兩大(dà)優勢。

    十年(nián)來(lái),憑借對(duì)市(shì)場(chǎ∑♥ng)趨勢敏銳的(de)洞察,和(hé)對(¶φduì)消費(fèi)者、企業(yè)形态深刻的×<(de)理(lǐ)解,我們服務的(de)已遍及京津冀×≤∏≠、長(cháng)三角、珠三角等領域,行("± ‍xíng)業(yè)覆蓋政府機(jī)構、企事(shì)業(yè)單位、無線通≥γ♣ (tōng)訊、環保、電(diàn)子(zǐ←")、醫(yī)藥、交通(tōng)、園林(l₹×±ín)、地(dì)産等行(xíng)業(yè),諸多(duō)知α↔(zhī)名企業(yè),如(rú)廣州京信集團、廣東(dōng)聯通(tōΩ♣•ng)廣州分(fēn)公司、搜狐家(jiā)居廣州站(zhàn)、 ∞★™搜狐家(jiā)居邯鄲站(zhàn)等,都(dōu)鑒證了(le)首創&‍設計(jì)公司的(de)品牌設計(jì)思想與能(néng)力,首創設計(j∞₽ì)公司也(yě)與諸多(duō)企業(yè)勃的(de)市(shì)場(  chǎng)經濟中互促共生(shēng)。

在線客服


  • 掃描加微(wēi)信

  • 掃描加QQ

  • 掃描浏覽手機(jī)版
首創網絡邯鄲公司
邯鄲公司
服務熱(rè)線:0310-4559740 / 1893104562ε€↔3  公司地(dì)址:邯鄲市(shì)叢台¥"™♣區(qū)頤高(gāo)廣場(chǎng)B座13層1304室÷‌  客戶接待:邯鄲市(shì)陵園路(lù)669号康橋國(guó)際B©× 06