人人人妻人人人妻人人人,99精品国产综合久久久久五月天 ,欧美白人最猛性XXXXX,日韩AV无码免费播放

News新聞

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

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

PHP對象的淺復制與深復制的實例詳解

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

PHP對象的淺復制與深復制的實例詳解

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

實例代碼:

//聚合類 
class ObjA { 
  public $num = 0; 
  public $objB;//包含的對象 
  function __construct() { 
    $this->objB = new ObjB(); 
  } 
  //只有實現(xiàn)了下面方法聚合類 才能實現(xiàn)深復制 
  /*function __clone() { 
    $this->objB = clone $this->objB; 
  }*/ 
} 
 
class ObjB { 
  public $num2 = 0; 
} 
 
//原型對象 
$objA = new ObjA(); 
 
//復制對象(‘='復制引用) 
$objA2 = $objA; 
$objA2->num = 2; 
//隨著$objA2->num的變化 $objA->num也變化了 
print_r($objA->num.'<br/>');//結(jié)果為2 
print_r($objA2->num.'<br/>');//結(jié)果為2 
 
//復制對象(‘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)復制的是引用 
$objA3->objB->num2 = 7; 
print_r($objA3->objB->num2.'<br/>');//結(jié)果是7 
print_r($objA->objB->num2.'<br/>');//結(jié)果是7</pre>