php類之clone 克隆
物件也能被“克隆”
在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()方法
|
該程式執行結果為:物件已被克隆
物件也能被“克隆”
在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()方法
|
該程式執行結果為:物件已被克隆