有的時候我們需要在一個項目裡面,使用兩個或多個一樣的對象,如果你使用“new”關鍵字重新創建對象的話,再賦值上相同的屬性,這樣做比較煩瑣而且也容易出錯,所以要根據一個對象完全克隆出一個一模一樣的對象,是非常有必要的,而且克隆以後,兩個對象互不干擾。
在PHP4我們使用「clone」這個關鍵字來複製物件;
class
//定義一個建構方法參數為屬性名稱$name、性別$ sex與年齡$age進行賦值 |
10
|
2$
=
""
$age
=
$name
;
|
sex= $sex ;
13
$this ->age=$ |
14
//這個人可以說話的方法,說出自己的屬性
|
17
|
function
say() 8
echo | "我的名字叫做:"
. $this ->name .
" 性別:" .
| $this
->sex .
" 我的年齡是:"
20
= new |
Person( "張三" ,
"男" |
, 20);
|
24
//使用「clone」克隆新物件p2,和p1物件具有相同的屬性和方法。
25
$p2 =clone $p2 =clone
| $p2
?>
| PHP4定義了一個特殊的方法名稱「__clone()」方法,是在物件複製時自動呼叫的方法,用「__clone()」方法將建立一個與原始物件擁有相同屬性和方法的對象,如果想在克隆後來改變原物件的內容,需要在__clone()中重寫原本的屬性和方法, 「__clone()」方法可以沒有參數,它自動包含$this和$that兩個指針,$this指向複本,而$that指向 原本 | ;
01
02
$name;
; ;
//定義一個建構方法參數為屬性姓名$name、性別$sex和年齡$age進行賦值
$sex=
->name=$name
12
13
16
echo "我的名字叫做:" |
. $ this ->name .
" 性別:" . $this |
->sex .
" 我的年齡是:".
21
| //對象克隆時自動調用的方法, 如果想在克隆後改變原對象的內容,需要重寫原本__的方法和屬性 |
23
|
24 |
//$this指的複本p2, 而
| //$this指的複本p2, 而that則指向本方法1
29
30
newPerson(
35個
| 上例輸出: 我的名子叫:張三 性別:男 我的年齡是:20我的名子叫:我是假的張三 性別:男 我的年齡是:30
|
以上就介紹了php中的clone對象,包括了方面的內容,希望對PHP教程有興趣的朋友有幫助。
|