php中對(duì)象引用和復(fù)制實(shí)例分析
本文實(shí)例講述了php中對(duì)象引用和復(fù)制。分享給大家供大家參考,具體如下:
引用
$tv2 = $tv1;
或者
$tv2 = &$tv1;
以上兩種方式,效果是一樣的??梢岳斫鉃閘inux里面的硬鏈接。
克隆(淺復(fù)制)
$tv2 = clone $tv1;
“淺復(fù)制”:被復(fù)制對(duì)象的所有變量都含有與原來(lái)的對(duì)象相同的值,而所有的對(duì)其他對(duì)象的引用都仍然指向原來(lái)的對(duì)象。也就是說(shuō),淺復(fù)制僅僅復(fù)制所考慮的對(duì)象,而不復(fù)制它所引用的對(duì)象。
深復(fù)制
$tv4 = unserialize(serialize($tv1));
相對(duì)于“淺復(fù)制”,當(dāng)然也有一個(gè)“深復(fù)制”:被復(fù)制的對(duì)象的所有的變量都含有與原來(lái)的對(duì)象相同的值,除去那些引用其他對(duì)象的變量。也就是說(shuō),深復(fù)制把要復(fù)制的對(duì)象所引用的對(duì)象都復(fù)制了一遍。
代碼示例
<?php header("Content-type:text/html;charset=utf-8"); class TvControl{ } class Tv{ private $color; private $tvControl; function __construct(){ $this->color = "black"; $this->tvControl = new TvControl(); } function setColor($color){ $this->color = $color; } function getColor(){ return $this->color; } function getTvControl(){ return $this->tvControl; } } $tv1 = new Tv(); $tvControl1 = $tv1->getTvControl(); echo "原始類:"; var_dump($tv1); echo "<hr/>"; $tv2 = $tv1; echo "引用類:"; var_dump($tv2); echo "<hr/>"; $tv3 = clone $tv1; echo "克隆(淺復(fù)制):"; var_dump($tv3); echo "<hr/>"; $tv4 = unserialize(serialize($tv1)); echo "深復(fù)制:"; var_dump($tv4);
輸出結(jié)果:
原始類:
object(Tv)[1]
private 'color' => string 'black' (length=5)
private 'tvControl' =>
object(TvControl)[2]
引用類:
object(Tv)[1]
private 'color' => string 'black' (length=5)
private 'tvControl' =>
object(TvControl)[2]
克?。\復(fù)制):
object(Tv)[3]
private 'color' => string 'black' (length=5)
private 'tvControl' =>
object(TvControl)[2]
深復(fù)制:
object(Tv)[4]
private 'color' => string 'black' (length=5)
private 'tvControl' =>
object(TvControl)[5]
參考文章:http://www.dbjr.com.cn/article/167631.htm
更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《php面向?qū)ο蟪绦蛟O(shè)計(jì)入門教程》、《PHP數(shù)組(Array)操作技巧大全》、《PHP基本語(yǔ)法入門教程》、《PHP運(yùn)算與運(yùn)算符用法總結(jié)》、《php字符串(string)用法總結(jié)》、《php+mysql數(shù)據(jù)庫(kù)操作入門教程》及《php常見數(shù)據(jù)庫(kù)操作技巧匯總》
希望本文所述對(duì)大家PHP程序設(shè)計(jì)有所幫助。
相關(guān)文章
利用PHP擴(kuò)展vld查看PHP opcode操作步驟
首先下載最新版vld擴(kuò)展接下來(lái)編譯安裝vld擴(kuò)展最后將生成的vld.so復(fù)制到extension_dir目錄下然后修改php.ini文件接下來(lái)創(chuàng)建test.php文件,感興趣的你可以參考下本文2013-03-03php判斷/計(jì)算閏年的方法小結(jié)【三種方法】
這篇文章主要介紹了php判斷/計(jì)算閏年的方法,結(jié)合實(shí)例形式總結(jié)分析了三種計(jì)閏年的判斷方法,需要的朋友可以參考下2019-07-07PHP Session ID的實(shí)現(xiàn)原理與實(shí)例
這篇文章主要介紹了PHP Session ID的實(shí)現(xiàn)原理與實(shí)例,幫助大家更好的理解和學(xué)習(xí)使用PHP,感興趣的朋友可以了解下2021-05-05php批量刪除數(shù)據(jù)庫(kù)下指定前綴的表以prefix_為例
這篇文章主要介紹了如何用php批量刪除數(shù)據(jù)庫(kù)下所有前綴為prefix_的表,這個(gè)功能比較實(shí)用,需要的朋友可以參考下2014-08-08PHP與MySQL開發(fā)的8個(gè)技巧小結(jié)
LAMP 架構(gòu)的網(wǎng)站,我以前注重的多是安裝/配置方面的,講述開發(fā)的相對(duì)較少,因?yàn)樽约簭氖麻_發(fā)也少??戳艘院螅H有啟發(fā),以前開發(fā)中遇到的一些問題,迎刃而解。所以翻譯出來(lái)和大家共享。2010-12-12php設(shè)計(jì)模式 Command(命令模式)
將一個(gè)請(qǐng)求封裝為一個(gè)對(duì)象從而使你可用不同的請(qǐng)求對(duì)客戶進(jìn)行參數(shù)化,對(duì)請(qǐng)求排除或記錄請(qǐng)求日志,以及支持可取消的操作2011-06-06php可擴(kuò)展的驗(yàn)證類實(shí)例(可對(duì)郵件、手機(jī)號(hào)、URL等驗(yàn)證)
這篇文章主要介紹了php可擴(kuò)展的驗(yàn)證類,實(shí)例分析了php針對(duì)郵件、手機(jī)號(hào)、URL等常用的驗(yàn)證技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-07-07