克隆作爲另一個對象的子對象的對象時,「是否需要」指示屬於子類__clone()
方法或子類__clone()
中的對象的所有父屬性方法只能包含它自己的不屬於父對象的對象屬性?如何處理子類對象屬性的__clone
下面是一個例子
目的Child_A
延伸對象Parent_A
。
對象Parent_A
在其構造函數中使用對象A_1
並具有__clone()
方法。
class Parent_A{
function __construct(A_1 $a_1){
$this->A_1 = $a_1;
}
function __clone(){
$this->A_1 = clone $this->A_1;
}
}
目的Child_A
要求A_2
構建。
class Child_A{
function __construct(A_2 $a_2){
parent::__construct(new A_1());
}
function __clone(){
$this->A_2 = clone $this->A_2;
}
}
如果我想打的Child_A
深層副本,將包括DEEP_COPY A_1
,我應該在Child_A
使用:
function __clone(){
$this->A_1 = clone $this->A_1;
$this->A_2 = clone $this->A_2;
}
或者是下面的足夠的父對象的克隆方法已經包括A_1
:
function __clone(){
$this->A_2 = clone $this->A_2;
}
謝謝。
我不知道這個問題的答案了我的頭頂部,但couldn」你檢查創建的對象,並自己確定?我確定這個過程的方法是爲每個對象創建一個id,並讓對象在echo或error_log中的每一步中報告它的id。然後,嘗試這兩種方法,看看你是否得到你期望的結果。 – starshine531
100賞金已經回答了問題? HTTP://計算器。com/questions/10831798/php-deep-clone-object只是使用unserialize(serialize($ object)); – AhmetRasitBekar