日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

php 克隆对象,php中对象的复制与克隆

發布時間:2023/12/20 php 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php 克隆对象,php中对象的复制与克隆 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

* 對象的復制與克隆

* 1.默認情況下,對象是引用傳遞(實際上是對象標識符的復制,后面會詳細說)

* 2.也就是說二個對象變量實際上是引用的是同一個對象

* 3.如果要創建一個新的對象,必須使用clone關鍵字來克隆當前對象

* 4.當使用clone關鍵字時,如果類中有__clone()會自動調用

* 5.__clone()方法運行在新創建的對象上面

* 6.__clone()方法能控制我們復制什么,以及克隆時要完成的基本操作class Member

{

//聲明三個私有屬性

private $name; //會員名

private $email; //會員郵箱

private $score; //會員積分

//構造方法

public function __construct($name='',$email='',$score=0)

{

$this->name = $name;

$this->email = $email;

$this->score = $score;

}

//查詢器(暫時省略訪問控制)

public function __get($name)

{

return $this->$name;

}

//設置器(暫時省略訪問控制)

public function __set($name,$value)

{

$this->$name = $value;

}

//克隆魔術方法在對象克隆時自動調用,針對新對象進行初始化操作

public function __clone()

{

$this->score = 0;

}

}

//實例化會員類Member,創建會員對象$member$member = new Member('peter','peter@php.cn',1000);

//訪問測試echo $member->score;

//復制會員對象$member1 = $member;

//使用新變量名$member1來更新對象信息$member1->score = 2000;

//用新對象變量名$member1訪問echo $member1->score;

echo '


';

//用原對象對象名$member訪問echo $member->score;

* 結論:

* 1.新變量修改的結果反映到了原對象變量中

* 2.說明這二個變量,實際上指向的是同一個對象

* 3.也就是對象默認是引用傳遞

* 4.或者說,第二個變量名$member1只是原變量的別名,并沒創建新對象

* 5.可以理解為僅僅是將原對象的標識符,重新起了一個新名稱罷了var_dump($member1); //對象id=1

var_dump($member); //對象id=1

//說明$member1和$member是二個完全一樣的對象,僅僅是名稱不同罷了

//如果想完全創建一個全新的對象應該如何做呢?需要使用關鍵字:clone$member2 = clone $member;

//我們先查看一下對象變量$member2的score屬性值echo $member2->score; //目前是原始值2000

//修改score值$member2->score = 5000;

echo '


';

//再次查看$member2中的scoreecho $member2->score; //新值5000

echo '


';

//大家想一下,我的這種修改,會不會影響到原$member變量的score屬性值呢?echo $member->score; //發現原對象的score屬性值仍為2000,未發生變化

//這是為什么呢?因為我們使用了克隆技術,創建了二個完全不同的對象變量

//下面進行驗證var_dump($member); //變量id是1

var_dump($member2); //變量id是2

//這二個對象變量的id是不同的,說明是二個完全不同的對象

//下面完成這樣的一個任務:創建新的會員對象的時候,將該會員的積分清零?應該怎么做?

//在Memeber類中創建一個__clone()克隆魔術方法,對克隆出的新對象進行預處理

//再演示一遍

//查看當前會積分echo $member->score;

//克隆創建一個全新的對象$member3$member3 = clone $member;

//查看新對象$member3的score值,以驗證類中的__clone()是否生效?echo '


';

echo $member3->score; //0,說明克隆魔術方法已經生效

總結

以上是生活随笔為你收集整理的php 克隆对象,php中对象的复制与克隆的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。