php類和物件 clone 轉殖

2021-08-11 02:45:42 字數 908 閱讀 1112

在php5中,物件的傳遞方式預設為引用傳遞,如果我們想要在記憶體中生成兩個一樣的物件或者建立乙個物件的副本,這時可以使用「轉殖」。

物件的複製是通過關鍵字 clone 來實現的。用 clone 轉殖出來的物件與原物件沒有任何關係,它是把原來的物件從當前的位置重新複製了乙份,也就是相當於在記憶體中新開闢了一塊空間。通過關鍵字 clone 可以轉殖乙個物件,語法格式如下:

$轉殖物件名稱=clone$原物件名稱;

物件的__clone()方法不能夠直接被呼叫,只有當通過關鍵字 clone 轉殖乙個物件時才可以使用該物件呼叫__clone()方法。當建立物件的乙個副本時,php5將會檢查__clone()方法是否存在。如果不存在,那 麼它就會呼叫預設的__clone()方法,複製物件的所有屬性。如果__clone方法已經定義過,那麼__clone()方法就會負責設定新物件的屬 性。所以在__clone()方法中,只需要覆蓋那些需要更改的屬性就可以了。例子如下:

classmyclone

}

$objecta=newmyclone();

$objectb=$objecta;//不呼叫__clone()方法,沒任何輸出

$objectc=clone$objecta;//呼叫__clone()方法

該程式執行結果為:物件已被轉殖

PHP轉殖物件clone

有的時候我們需要在乙個專案裡面,使用兩個或多個一樣的物件,如果你使用 new 關鍵字重新建立物件的話,再賦值上相同的屬性,這樣做比較煩瑣而且也容易出錯,所以要根據乙個物件完全轉殖出乙個一模一樣的物件,是非常有必要的,而且轉殖以後,兩個物件互不干擾。class person 這個人可以說話的方法,說出...

JAVA 物件轉殖clone

有時候我們希望轉殖乙個已存在的物件,並對其進行操作,但是不希望改變原物件,這時使用clone技術就非常方便了。但是使用clone,也有一些需要注意的地方,因為clone有淺層轉殖和深層轉殖。還是習慣先直接上 結合 講解。注 如果你希望某個類具有clone功能,該類必須實現介面cloneable,它是...

物件的轉殖(clone)

讓物件obj1轉殖物件obj var obj var obj1 function clone origin,target clone obj,obj1 使用for.in把obj物件的每乙個屬性值提取出來並賦值給物件obj1,這就完成了轉殖。關於以上那個轉殖,為了防止使用者不傳target的形參或者是...