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 "原始類(lèi):";
var_dump($tv1);
echo "<hr/>";
$tv2 = $tv1;
echo "引用類(lèi):";
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é)果:
原始類(lèi):
object(Tv)[1]
private 'color' => string 'black' (length=5)
private 'tvControl' =>
object(TvControl)[2]
引用類(lèi):
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.dhdzp.com/article/167631.htm
更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專(zhuān)題:《php面向?qū)ο蟪绦蛟O(shè)計(jì)入門(mén)教程》、《PHP數(shù)組(Array)操作技巧大全》、《PHP基本語(yǔ)法入門(mén)教程》、《PHP運(yùn)算與運(yùn)算符用法總結(jié)》、《php字符串(string)用法總結(jié)》、《php+mysql數(shù)據(jù)庫(kù)操作入門(mén)教程》及《php常見(jiàn)數(shù)據(jù)庫(kù)操作技巧匯總》
希望本文所述對(duì)大家PHP程序設(shè)計(jì)有所幫助。
相關(guān)文章
thinkphp(php)插件鉤子(hooks)分析的簡(jiǎn)單實(shí)現(xiàn)機(jī)制
現(xiàn)在主流的cms或者blog等系統(tǒng)中,都內(nèi)置的有插件系統(tǒng),但是層層深入、剖析實(shí)現(xiàn)的方式,其實(shí)都是最簡(jiǎn)單的鉤子的復(fù)雜化的實(shí)現(xiàn)。這篇文章主要介紹了thinkphp(php)插件鉤子(hooks)分析的簡(jiǎn)單實(shí)現(xiàn)機(jī)制,需要的朋友可以參考下2023-03-03
php 攻擊方法之談php+mysql注射語(yǔ)句構(gòu)造
由于PHP和MYSQL本身得原因,PHP+MYSQL的注射要比asp困難,尤其是注射時(shí)語(yǔ)句的構(gòu)造方面更是個(gè)難點(diǎn),本文主要是借對(duì)Okphp BBS v1.3一些文件得簡(jiǎn)單分析,來(lái)談?wù)刾hp+mysql注射語(yǔ)句構(gòu)造方式,希望本文對(duì)你有點(diǎn)幫助。2009-10-10
php實(shí)現(xiàn)基于微信公眾平臺(tái)開(kāi)發(fā)SDK(demo)擴(kuò)展的方法
這篇文章主要介紹了php實(shí)現(xiàn)基于微信公眾平臺(tái)開(kāi)發(fā)SDK(demo)擴(kuò)展的方法,包括處理文本消息、天氣、翻譯、聊天信息及自定義菜單等,需要的朋友可以參考下2014-12-12
php調(diào)用C代碼的實(shí)現(xiàn)方法
本篇文章主要是對(duì)php調(diào)用C代碼的實(shí)現(xiàn)方法進(jìn)行了介紹,需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助2014-03-03
PHP擴(kuò)展Swoole實(shí)現(xiàn)實(shí)時(shí)異步任務(wù)隊(duì)列示例
這篇文章主要介紹了PHP擴(kuò)展Swoole實(shí)現(xiàn)實(shí)時(shí)異步任務(wù)隊(duì)列,結(jié)合實(shí)例形式分析了PHP擴(kuò)展Swoole實(shí)現(xiàn)實(shí)時(shí)異步任務(wù)隊(duì)列相關(guān)客戶(hù)端與服務(wù)器端操作技巧,需要的朋友可以參考下2019-04-04

