国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > PHP > 正文

php中對象的復(fù)制與克隆

2020-03-22 18:22:47
字體:
供稿:網(wǎng)友
* 對象的復(fù)制與克隆

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

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

* 3.如果要創(chuàng)建一個新的對象,必須使用clone關(guān)鍵字來克隆當(dāng)前對象

* 4.當(dāng)使用clone關(guān)鍵字時,如果類中有__clone()會自動調(diào)用

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

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

html' target='_blank'>class Member //聲明三個私有屬性 private $name; //會員名 private $email; //會員郵箱 private $score; //會員積分 //構(gòu)造方法 public function __construct($name= ,$email= ,$score=0) $this- name = $name; $this- email = $email; $this- score = $score; //查詢器(暫時省略訪問控制) public function __get($name) return $this- $name; //設(shè)置器(暫時省略訪問控制) public function __set($name,$value) $this- $name = $value; //克隆魔術(shù)方法在對象克隆時自動調(diào)用,針對新對象進行初始化操作 public function __clone() $this- score = 0;}

//實例化會員類Member,創(chuàng)建會員對象$member

$member = new Member( peter , peter@VeVb.com ,1000);

//訪問測試

echo $member- score;

//復(fù)制會員對象

$member1 = $member;

//使用新變量名$member1來更新對象信息

$member1- score = 2000;

//用新對象變量名$member1訪問

echo $member1- score;echo hr 

//用原對象對象名$member訪問

echo $member- score;

* 結(jié)論:

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

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

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

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

* 5.可以理解為僅僅是將原對象的標識符,重新起了一個新名稱罷了

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

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

//如果想完全創(chuàng)建一個全新的對象應(yīng)該如何做呢?需要使用關(guān)鍵字:clone

$member2 = clone $member;

//我們先查看一下對象變量$member2的score屬性值

echo $member2- score; //目前是原始值2000

//修改score值

$member2- score = 5000;echo hr 

//再次查看$member2中的score

echo $member2- score; //新值5000echo hr 

//大家想一下,我的這種修改,會不會影響到原$member變量的score屬性值呢?

echo $member- score; //發(fā)現(xiàn)原對象的score屬性值仍為2000,未發(fā)生變化

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

//下面進行驗證

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

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

//下面完成這樣的一個任務(wù):創(chuàng)建新的會員對象的時候,將該會員的積分清零?應(yīng)該怎么做?

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

//再演示一遍

//查看當(dāng)前會積分

echo $member- score;

//克隆創(chuàng)建一個全新的對象$member3

$member3 = clone $member;

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

echo hr echo $member3- score; //0,說明克隆魔術(shù)方法已經(jīng)生效

以上就是php中對象的復(fù)制與克隆的詳細內(nèi)容,PHP教程

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 剑河县| 柯坪县| 永仁县| 柘城县| 宁安市| 广平县| 乌鲁木齐市| 呼和浩特市| 壶关县| 贞丰县| 合江县| 白水县| 新河县| 宜宾县| 莱阳市| 尼玛县| 东兰县| 托里县| 夏津县| 黎平县| 忻城县| 闵行区| 扶余县| 濮阳县| 阳信县| 泾源县| 南安市| 宁陵县| 房山区| 静安区| 澳门| 广河县| 牟定县| 伽师县| 徐州市| 临高县| 邯郸市| 奈曼旗| 会理县| 海伦市| 兖州市|