国产精品成人VA在线观看,亚洲日韩在线中文字幕综合,亚洲AV电影天堂男人的天堂,久久人人爽人人爽人人av东京热

News新聞

業(yè)界新聞動態(tài)、技術(shù)前沿
Who are we?

您的位置:首頁      樂道系統(tǒng)FAQ      PHP對象的淺復(fù)制與深復(fù)制的實例詳解

PHP對象的淺復(fù)制與深復(fù)制的實例詳解

標(biāo)簽: 發(fā)布日期:2017-10-26 00:00:00 297

PHP對象的淺復(fù)制與深復(fù)制的實例詳解

最近在看原型模式時注意到這個問題~~PHP中對象 '=' 與‘clone'的區(qū)別

實例代碼:

//聚合類 
class ObjA { 
  public $num = 0; 
  public $objB;//包含的對象 
  function __construct() { 
    $this->objB = new ObjB(); 
  } 
  //只有實現(xiàn)了下面方法聚合類 才能實現(xiàn)深復(fù)制 
  /*function __clone() { 
    $this->objB = clone $this->objB; 
  }*/ 
} 
 
class ObjB { 
  public $num2 = 0; 
} 
 
//原型對象 
$objA = new ObjA(); 
 
//復(fù)制對象(‘='復(fù)制引用) 
$objA2 = $objA; 
$objA2->num = 2; 
//隨著$objA2->num的變化 $objA->num也變化了 
print_r($objA->num.'<br/>');//結(jié)果為2 
print_r($objA2->num.'<br/>');//結(jié)果為2 
 
//復(fù)制對象(‘clone'關(guān)鍵字克隆) 
$objA3 = clone $objA; 
$objA3->num = 4; 
//隨著$objA3->num的變化 $objA->num沒有變化 
print_r($objA->num.'<br/>');//結(jié)果為2 
print_r($objA3->num.'<br/>');//結(jié)果為4 
//但是clone的對象(是聚合類)中包含其他對象時所包含的對象(objB)復(fù)制的是引用 
$objA3->objB->num2 = 7; 
print_r($objA3->objB->num2.'<br/>');//結(jié)果是7 
print_r($objA->objB->num2.'<br/>');//結(jié)果是7</pre>