偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

PHP 5克隆函數(shù)應(yīng)用淺析

開(kāi)發(fā) 后端
本文向您介紹PHP 5克隆函數(shù)的簡(jiǎn)單應(yīng)用,包括clone()函數(shù)的調(diào)用及對(duì)象通過(guò)clone關(guān)鍵詞復(fù)制時(shí)程序的執(zhí)行流程剖析等。

毫無(wú)疑問(wèn),PHP5的推出對(duì)網(wǎng)絡(luò)應(yīng)用程序的發(fā)展產(chǎn)生了深遠(yuǎn)意義。這還不僅僅是因?yàn)樗鼘?duì)于PHP4高度的向后兼容性。

當(dāng)然,PHP5數(shù)據(jù)包具備強(qiáng)大的對(duì)象模型和一整套新型函數(shù)與庫(kù),更不用說(shuō)它其中便攜式異常機(jī)制,這一機(jī)制賦予了它有效處理錯(cuò)誤和異常事件的能力。 通過(guò)PHP在服務(wù)器上寫(xiě)入文件

當(dāng)然,當(dāng)我們使用“函數(shù)”這一詞時(shí),我們所談?wù)摰牟⒉粌H是通常所指的執(zhí)行指定任務(wù)(如從文件中讀取數(shù)據(jù)或?yàn)樗┳兞繎?yīng)用過(guò)濾器)的那一概念。我們所指的還包括一些神奇功能(比如PHP 5 的克隆函數(shù)),即那些不具備默認(rèn)的確定執(zhí)行任務(wù)且可以被PHP引擎自動(dòng)調(diào)用以響應(yīng)某些特定事件的函數(shù)。

開(kāi)發(fā)對(duì)象指向型PHP應(yīng)用程序時(shí),_set(),_get()和_call()方法就種神奇函數(shù)的典型代表,但是還有其他一些神奇函數(shù)值得開(kāi)發(fā)員深入分析。在本文里,我們將集中討論“_clone()”方法,顧名思義,使用“clone”P(pán)HP關(guān)鍵詞時(shí)可以從幕后調(diào)用這一方法。

復(fù)制對(duì)象的時(shí)候從幕后觸發(fā)函數(shù)

就像我們?cè)谥疤岬降?,使用clone關(guān)鍵詞的時(shí)候,_clone()函數(shù)(克隆函數(shù))會(huì)被自動(dòng)援引。為了簡(jiǎn)潔起見(jiàn),現(xiàn)在我們只談?wù)撚脕?lái)創(chuàng)建指定對(duì)象單獨(dú)副本的clone關(guān)鍵詞,而不談及創(chuàng)建引用。  用PHP把HTML添加到多個(gè)文件中

現(xiàn)在,返回_clone函數(shù),可以給它一個(gè)明確的任務(wù)指示。為了實(shí)現(xiàn)這一點(diǎn),我們看看下面的代碼:

  1.  class User   
  2.   {  
  3.  
  4.   // constructor (not implemented)  
  5.  
  6.   public function _construct(){}  
  7.  
  8.   // set undeclared property in a restrictive way  
  9.  
  10.   public function __set($property$value)  
  11.  
  12.   {  
  13.  
  14.   if (in_array($propertyarray('fname''lname''email')) === TRUE)  
  15.  
  16.   {  
  17.  
  18.   $this->$property = $value;  
  19.  
  20.   }  
  21.  
  22.   }  
  23.  
  24.   // get undeclared property  
  25.  
  26.   public function __get($property)  
  27.  
  28.   {  
  29.  
  30.   if (isset($this->$property))  
  31.  
  32.   {  
  33.  
  34.   return $this->$property;  
  35.  
  36.   }  
  37.  
  38.   }  
  39.  
  40.   // single point to fetch user data  
  41.  
  42.   public function __call($method$args)  
  43.  
  44.   {  
  45.  
  46.   if ($method === 'fetch' AND emptyempty($args) === FALSE)  
  47.  
  48.   {  
  49.  
  50.   return $this->$args[0];  
  51.  
  52.   }  
  53.  
  54.   }  
  55.  
  56.   // implement __clone( method  
  57.  
  58.   public function __clone()  
  59.  
  60.   {  
  61.  
  62.   echo 'Cloning user object.';  
  63.  
  64.   }  
  65.  
  66.   } 

在這個(gè)特定示例中,我們要給上述的_clone方法一個(gè)不太顯眼的任務(wù),以便幫助你更好地理解,但是要相信該函數(shù)可以用來(lái)執(zhí)行更為復(fù)雜的任務(wù)。不管本文中所演示的_clone函數(shù)是如何簡(jiǎn)單,復(fù)制簡(jiǎn)單的User類(lèi)實(shí)例時(shí),該函數(shù)非常有助于向我們展示PHP引擎是怎樣調(diào)用函數(shù)的。

復(fù)制對(duì)象的時(shí)候調(diào)用Clone方法

要明白PHP解釋程序是如何調(diào)用_clone()函數(shù)最好的方法是觀察一個(gè)演示如何復(fù)制簡(jiǎn)單User類(lèi)實(shí)例的具體示例。

我們制作了一個(gè)小型腳本,該腳本使用克隆函數(shù)中的clone關(guān)鍵字來(lái)復(fù)制一個(gè)用戶(hù)對(duì)象從而觸發(fā)有關(guān)_clone()方法的調(diào)用。該腳本的定義如下所示:

  1.   $user = new User();   
  2.   $user->fname = 'Alejandro';  
  3.  
  4.   $user->lname = 'Gervasio';  
  5.  
  6.   $user->email = 'alejandro@mydomain.com';  
  7.  
  8.   // display user data  
  9.  
  10.   echo 'First Name : ' . $user->fetch('fname') . ' Last Name : ' . $user->fetch('lname') .
     
    ' Email : ' . $user->fetch('email');  
  11.  
  12.   /*  
  13.  
  14.   displays the following  
  15.  
  16.   First Name : Alejandro Last Name : Gervasio Email : alejandro@mydomain.com  
  17.  
  18.   */ 
  19.  
  20.   // clone user object  
  21.  
  22.   $newuser = clone $user;  
  23.  
  24.   /*  
  25.  
  26.   displays the following  
  27.  
  28.   Cloning user object.  
  29.  
  30.   */ 

這段代碼易于編寫(xiě),也易于理解。正如你所看到的,一旦腳本在User類(lèi)中生成一個(gè)對(duì)象并創(chuàng)建一些未申明的屬性,它就會(huì)復(fù)制這個(gè)對(duì)象。這個(gè)進(jìn)程會(huì)自動(dòng)調(diào)用相關(guān)的_clone()方法。

這一具體方法支持更復(fù)雜更有益的任務(wù)執(zhí)行。因此,如果PHP5中附帶的這些神奇函數(shù)已經(jīng)引起你的注意,你或許想通過(guò)使用這些函數(shù)改善自己的編程技能了。這樣的嘗試將極具啟發(fā)性。

結(jié)語(yǔ)

本文中,我們討論了如何實(shí)施和使用_clone()函數(shù)。對(duì)象通過(guò)clone關(guān)鍵詞復(fù)制時(shí),該函數(shù)會(huì)被自動(dòng)引用;這就是PHP 5克隆函數(shù)的強(qiáng)大之處。

 

【編輯推薦】

  1. PHP 5.3.0發(fā)布 新增命名空間等多項(xiàng)特性
  2. 升級(jí)PHP 5的理由:PHP 4和PHP 5性能對(duì)比
  3. PHP 5.0中多態(tài)性的實(shí)現(xiàn)方案淺析
  4. PHP 5 數(shù)據(jù)對(duì)象 (PDO) 抽象層與 Oracle
  5. PHP 5.0 中的對(duì)象重載技術(shù)研究
責(zé)任編輯:佚名 來(lái)源: IT專(zhuān)家網(wǎng)
相關(guān)推薦

2010-11-03 10:31:51

PHP魔術(shù)方法

2009-12-11 10:59:48

PHP函數(shù)extrac

2012-12-07 16:40:23

TechEd2012克隆DC

2009-01-16 14:08:42

PHP開(kāi)發(fā)Web應(yīng)用執(zhí)行效率

2009-11-24 16:28:41

PHP5魔術(shù)函數(shù)

2009-11-17 16:16:59

PHP遞歸函數(shù)

2009-12-02 10:32:02

PHP語(yǔ)法解析函數(shù)

2009-11-26 15:23:24

PHP函數(shù)ereg()

2022-05-23 15:57:18

加密貨幣黑客網(wǎng)絡(luò)攻擊

2009-09-16 10:43:22

PHP正則表達(dá)式函數(shù)

2009-12-08 09:51:10

PHP intval函

2009-09-16 16:01:57

PHP正則表達(dá)式正則表達(dá)式的應(yīng)用

2009-07-31 16:25:29

C#回調(diào)函數(shù)API應(yīng)用

2009-03-23 10:53:00

PHP5.3新特性PHP5.3PHP5

2009-12-10 11:02:44

PHP函數(shù)eval()

2009-12-10 17:09:42

PHP編碼轉(zhuǎn)換函數(shù)

2009-12-07 17:05:36

PHP函數(shù)imaget

2009-12-03 17:18:15

PHP strtoti

2009-11-30 16:08:32

PHP addslas

2011-08-29 17:27:47

HTML 5交互移動(dòng)應(yīng)用
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)