有的時候我們需要在一個項目裡面,使用兩個或多個一樣的對象,如果你使用“new”關鍵字重新建立對象的話,再賦值上相同的屬性,這樣做比較煩瑣而且也容易出錯,所以要根據一個對象完全複製出一個一模一樣的對象,是非常有必要的,而且複製以後,兩個對象互不干擾。
在PHP4中我們使用“clone”這個關鍵字複製對象;
09 |
//定義一個構造方法參數為屬性姓名$name、性別$sex和年齡$age進行賦值 |
10 |
function__construct($name= "", $sex= "", $age= "") { |
18 |
echo"我的名子叫:". $this->name ." 性別:". $this->sex ." 我的年齡是:". $this->age ." "; |
22 |
$p1= newPerson("張三","男", 20); |
24 |
//使用“clone”複製新對象p2,和p1對象具有相同的屬性和方法。 |
PHP4定義了一個特殊的方法名“__clone()”方法,是在對象複製時自動調用的方法,用“__clone()”方法將建立一個與原對象擁有相同屬 性和方法的對象,如果想在複製後改變原對象的內容,需要在__clone()中重寫原本的屬性和方法, “__clone()”方法可以沒有參數,它自 動包含$this和$that兩個指標,$this指向複本,而$that指向原本;
09 |
//定義一個構造方法參數為屬性姓名$name、性別$sex和年齡$age進行賦值 |
10 |
function__construct($name= "", $sex= "", $age= "") { |
18 |
echo"我的名子叫:". $this->name ." 性別:". $this->sex ." 我的年齡是:". $this->age ." "; |
21 |
//對象複製時自動調用的方法, 如果想在複製後改變原對象的內容,需要在__clone()中重寫原本的屬性和方法 |
24 |
//$this指的複本p2, 而$that是指向原本p1,這樣就在本方法裡,改變了複本的屬性。 |
25 |
$this->name ="我是假的 $that->name"; |
31 |
$p1= newPerson("張三","男", 20); |
上例輸出:
我的名子叫:張三 性別:男 我的年齡是:20
我的名子叫:我是假的張三 性別:男 我的年齡是:30
以上就介紹了php中的clone對象,包括了方面的內容,希望對PHP教程有興趣的朋友有所協助。