程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP綜合 >> PHP對象克隆clone用法示例

PHP對象克隆clone用法示例

編輯:PHP綜合

本文實例講述了PHP對象克隆clone用法。分享給大家供大家參考,具體如下:

淺克隆:只是克隆對象中的非對象非資源數據,即對象中屬性存儲的是對象類型,則會出現克隆不完全

<?php
class B{
 public $val = 10;
}
class A{
 public $val = 20;
 public $b;
 public function __construct(){
  $this->b = new B();
 }
}
$obj_a = new A();
$obj_b = clone $obj_a;
$obj_a->val = 30;
$obj_a->b->val = 40;
var_dump($obj_a);
echo '<br>';
var_dump($obj_b);

運行結果如下:

object(A)[1]
 public 'val' => int 30
 public 'b' => 
 object(B)[2]
  public 'val' => int 40

object(A)[3]
 public 'val' => int 20
 public 'b' => 
 object(B)[2]
  public 'val' => int 40

深克隆:一個對象的所有屬性數據都徹底的復制,需要使用魔術方法__clone(),並在裡面實現深度克隆

<?php
class B{
 public $val = 10;
}
class A{
 public $val = 20;
 public $b;
 public function __construct(){
  $this->b = new B();
 }
 public function __clone(){
  $this->b = clone $this->b;
 }
}
$obj_a = new A();
$obj_b = clone $obj_a;
$obj_a->val = 30;
$obj_a->b->val = 40;
var_dump($obj_a);
echo '<br>';
var_dump($obj_b);

運行結果如下:

object(A)[1]
 public 'val' => int 30
 public 'b' => 
 object(B)[2]
  public 'val' => int 40

object(A)[3]
 public 'val' => int 20
 public 'b' => 
 object(B)[4]
  public 'val' => int 10

更多關於PHP相關內容感興趣的讀者可查看本站專題:《php面向對象程序設計入門教程》、《PHP基本語法入門教程》、《PHP運算與運算符用法總結》、《PHP網絡編程技巧總結》、《PHP數組(Array)操作技巧大全》、《php字符串(string)用法總結》、《php+mysql數據庫操作入門教程》及《php常見數據庫操作技巧匯總》

希望本文所述對大家PHP程序設計有所幫助。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved