php中对象引用和复制实例分析

2025-05-27 0 41

本文实例讲述了php对象引用复制。分享给大家供大家参考,具体如下:

引用

?

1
$tv2 = $tv1;

或者

?

1
$tv2 = &$tv1;

以上两种方式,效果是一样的。可以理解为linux里面的硬链接。

克隆(浅复制

?

1
$tv2 = clone $tv1;

“浅复制”:被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象引用都仍然指向原来的对象。也就是说,浅复制仅仅复制所考虑的对象,而不复制它所引用对象

复制

?

1
$tv4 = unserialize(serialize($tv1));

相对于“浅复制”,当然也有一个“深复制”:被复制对象的所有的变量都含有与原来的对象相同的值,除去那些引用其他对象的变量。也就是说,深复制把要复制对象引用对象复制了一遍。

代码示例

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37
<?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 "克隆(浅复制):";

var_dump($tv3);

echo "<hr/>";

$tv4 = unserialize(serialize($tv1));

echo "深复制:";

var_dump($tv4);

输出结果:

原始类:
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]
克隆(浅复制):
object(Tv)[3]
private 'color' => string 'black' (length=5)
private 'tvControl' =>
object(TvControl)[2]
复制
object(Tv)[4]
private 'color' => string 'black' (length=5)
private 'tvControl' =>
object(TvControl)[5]

参考文章:https://www.zzvips.com/article/183632.html

希望本文所述对大家PHP程序设计有所帮助。

原文链接:https://blog.csdn.net/koastal/article/details/52163483

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 php中对象引用和复制实例分析 https://www.kuaiidc.com/71367.html

相关文章

发表评论
暂无评论