本文目錄一覽:
- 1、php問題 克隆對象和引用對象的區別是什麼
- 2、PHP對象克隆clone用法示例
- 3、在php中 clone 對象的值可以改變嗎?(對象1中$var=2, 對象2克隆對象1 ,對象2.$var=3,print 對象1.$var;)
php問題 克隆對象和引用對象的區別是什麼
複製文件、建立快捷方式的區別,克隆就是複製,引用就是快捷方式,引用的對象實際上同一個東西,修改任何一個變數,另外一個也會跟著變化。
PHP對象克隆clone用法示例
本文實例講述了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程序設計有所幫助。
在php中 clone 對象的值可以改變嗎?(對象1中$var=2, 對象2克隆對象1 ,對象2.$var=3,print 對象1.$var;)
對象克隆後,得到是一個對象的實例,並將數據複製一份,兩者各自的數據都是獨立的。請參看以下代碼:
?php
class corporatedrone {
private $employeeid;
private $tiecolor;
function setEmployeeID($employeeid) {
$this-employeeid = $employeeid;
}
function getEmployeeID() {
return $this-employeeid;
}
function setTiecolor($tiecolor) {
$this-tiecolor = $tiecolor;
}
function getTiecolor() {
return $this-tiecolor;
}
}
// 建立對象1
$drone1 = new corporatedrone();
// 設置對象1屬性
$drone1-setEmployeeID(“12345”);
$drone1-setTiecolor(“red”);
// 克隆對象1
$drone2 = clone $drone1;
// 設置對象2屬性
$drone2-setEmployeeID(“67890”);
// 輸出兩個對象的成員屬性
echo “對象1 employeeID: “.$drone1-getEmployeeID().”br /”;
echo “對象1 tie color: “.$drone1-getTiecolor().”br /”;
echo “對象2 employeeID: “.$drone2-getEmployeeID().”br /”;
echo “對象2 tie color: “.$drone2-getTiecolor().”br /”;
?
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/246472.html