php中的clone對象

來源:互聯網
上載者:User
有的時候我們需要在一個項目裡面,使用兩個或多個一樣的對象,如果你使用“new”關鍵字重新建立對象的話,再賦值上相同的屬性,這樣做比較煩瑣而且也容易出錯,所以要根據一個對象完全複製出一個一模一樣的對象,是非常有必要的,而且複製以後,兩個對象互不干擾。

在PHP4中我們使用“clone”這個關鍵字複製對象;

01

02 classPerson

03 {

04 //下面是人的成員屬性

05 var$name; //人的名子

06 var$sex; //人的性別

07 var$age; //人的年齡

08

09 //定義一個構造方法參數為屬性姓名$name、性別$sex和年齡$age進行賦值

10 function__construct($name= "", $sex= "", $age= "") {

11 $this->name=$name;

12 $this->sex=$sex;

13 $this->age=$age;

14 }

15

16 //這個人可以說話的方法,說出自己的屬性

17 functionsay() {

18 echo"我的名子叫:". $this->name ." 性別:". $this->sex ." 我的年齡是:". $this->age ."
"
;

19 }

20 }

21

22 $p1= newPerson("張三","男", 20);

23

24 //使用“clone”複製新對象p2,和p1對象具有相同的屬性和方法。

25 $p2=clone $p1;

26 $p2->say();

27 ?>

PHP4定義了一個特殊的方法名“__clone()”方法,是在對象複製時自動調用的方法,用“__clone()”方法將建立一個與原對象擁有相同屬 性和方法的對象,如果想在複製後改變原對象的內容,需要在__clone()中重寫原本的屬性和方法, “__clone()”方法可以沒有參數,它自 動包含$this和$that兩個指標,$this指向複本,而$that指向原本

01

02 classPerson

03 {

04 //下面是人的成員屬性

05 var$name; //人的名子

06 var$sex; //人的性別

07 var$age; //人的年齡

08

09 //定義一個構造方法參數為屬性姓名$name、性別$sex和年齡$age進行賦值

10 function__construct($name= "", $sex= "", $age= "") {

11 $this->name=$name;

12 $this->sex=$sex;

13 $this->age=$age;

14 }

15

16 //這個人可以說話的方法, 說出自己的屬性

17 functionsay() {

18 echo"我的名子叫:". $this->name ." 性別:". $this->sex ." 我的年齡是:". $this->age ."
"
;

19 }

20

21 //對象複製時自動調用的方法, 如果想在複製後改變原對象的內容,需要在__clone()中重寫原本的屬性和方法

22 function__clone() {

23

24 //$this指的複本p2, 而$that是指向原本p1,這樣就在本方法裡,改變了複本的屬性。

25 $this->name ="我是假的 $that->name";

26 $this->age = 30;

27 }

28

29 }

30

31 $p1= newPerson("張三","男", 20);

32 $p2= clone$p1;

33 $p1->say();

34 $p2->say();

35 ?>

上例輸出:

我的名子叫:張三 性別:男 我的年齡是:20
我的名子叫:我是假的張三 性別:男 我的年齡是:30

以上就介紹了php中的clone對象,包括了方面的內容,希望對PHP教程有興趣的朋友有所協助。

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.