對象也能被“克隆”
在php5中,對象的傳遞方式默認為引用傳遞,如果我們想要在內存中生成兩個一樣的對象或者創建一個對象的副本,這時可以使用“克隆”。
通過 clone 克隆一個對象
對象的復制是通過關鍵字 clone 來實現的。用 clone 克隆出來的對象與原對象沒有任何關系,它是把原來的對象從當前的位置重新復制了一份,也就是相當於在內存中新開辟了一塊空間。通過關鍵字 clone 可以克隆一個對象,語法格式如下:
$克隆對象名稱=
clone
$原對象名稱;
|
__clone()方法
對象的__clone()方法不能夠直接被調用,只有當通過關鍵字 clone 克隆一個對象時才可以使用該對象調用__clone()方法。當創建對象的一個副本時,php5將會檢查__clone()方法是否存在。如果不存在,那 么它就會調用默認的__clone()方法,復制對象的所有屬性。如果__clone方法已經定義過,那么__clone()方法就會負責設置新對象的屬 性。所以在__clone()方法中,只需要覆蓋那些需要更改的屬性就可以了。例子如下:
class
MyClone{
public
function
__clone(){
echo
"對象已被克隆"
;
}
}
$objectA
=
new
MyClone();
$objectB
=
$objectA
;
//不調用__clone()方法,沒任何輸出
$objectC
=
clone
$objectA
;
//調用__clone()方法
|
該程序執行結果為:對象已被克隆