當在乙個person物件上呼叫clone時,產生了乙個新的副本,並且新副本的__clone()方法被呼叫。這意味著我們在__clone()中重新賦值會生效。這樣的淺複製可以保證所有的基本型別的屬性被完全複製。在複製物件屬性時只複製引用,並不複製引用物件。
在下面的例子中,當新建立副本時,新物件中所儲存的引用指向的是和$person所引用的同乙個account物件。當我們給$person的account屬性加錢,發現$person2物件中的餘額也增加了。
如果我們不希望物件屬性在複製之後被共享,那麼可以顯式的在__clone()方法中複製指向的物件
function __clone()
<?php
class account
}class person
function setid($id)
function __clone()
}$person=new person("lili",21,new account(200));
$person->setid(33);
$person2=clone $person;
$person->account->balance+=10000;
print $person2->account->balance;
PHP轉殖物件clone
有的時候我們需要在乙個專案裡面,使用兩個或多個一樣的物件,如果你使用 new 關鍵字重新建立物件的話,再賦值上相同的屬性,這樣做比較煩瑣而且也容易出錯,所以要根據乙個物件完全轉殖出乙個一模一樣的物件,是非常有必要的,而且轉殖以後,兩個物件互不干擾。class person 這個人可以說話的方法,說出...
php類和物件 clone 轉殖
在php5中,物件的傳遞方式預設為引用傳遞,如果我們想要在記憶體中生成兩個一樣的物件或者建立乙個物件的副本,這時可以使用 轉殖 物件的複製是通過關鍵字 clone 來實現的。用 clone 轉殖出來的物件與原物件沒有任何關係,它是把原來的物件從當前的位置重新複製了乙份,也就是相當於在記憶體中新開闢了...
JAVA 物件轉殖clone
有時候我們希望轉殖乙個已存在的物件,並對其進行操作,但是不希望改變原物件,這時使用clone技術就非常方便了。但是使用clone,也有一些需要注意的地方,因為clone有淺層轉殖和深層轉殖。還是習慣先直接上 結合 講解。注 如果你希望某個類具有clone功能,該類必須實現介面cloneable,它是...