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


Posted in PHP onAugust 14, 2019

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

引用

$tv2 = $tv1;

或者

$tv2 = &$tv1;

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

克隆(浅复制)

$tv2 = clone $tv1;

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

深复制

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

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

代码示例

<?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://3water.com/article/167631.htm

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

PHP 相关文章推荐
PHP中常用数组处理方法实例分析
Aug 30 PHP
PHP 截取字符串 分别适合GB2312和UTF8编码情况
Feb 12 PHP
解析PHP提交后跳转
Jun 23 PHP
PHP按行读取、处理较大CSV文件的代码实例
Apr 09 PHP
php中time()与$_SERVER[REQUEST_TIME]用法区别
Nov 19 PHP
Yii中创建自己的Widget实例
Jan 05 PHP
CodeIgniter控制器之业务逻辑实例分析
Jan 20 PHP
PHP的Yii框架中过滤器相关的使用总结
Mar 29 PHP
Yii2.0表关联查询实例分析
Jul 18 PHP
Yii框架日志操作图文与实例详解
Sep 09 PHP
基于thinkphp6.0的success、error实现方法
Nov 05 PHP
ThinkPHP5&amp;5.1实现验证码的生成、使用及点击刷新功能示例
Feb 07 PHP
php5对象复制、clone、浅复制与深复制实例详解
Aug 14 #PHP
PHP面向对象程序设计中的self、static、parent关键字用法分析
Aug 14 #PHP
PHP命名空间定义与用法实例分析
Aug 14 #PHP
php中的依赖注入实例详解
Aug 14 #PHP
php基于 swoole 实现的异步处理任务功能示例
Aug 13 #PHP
thinkphp3.2框架中where条件查询用法总结
Aug 13 #PHP
thinkphp5框架结合mysql实现微信登录和自定义分享链接与图文功能示例
Aug 13 #PHP
You might like
解析dedeCMS验证码的实现代码
2013/06/07 PHP
利用PHPExcel实现Excel文件的写入和读取
2017/04/26 PHP
PHP高并发和大流量解决方案整理
2019/12/24 PHP
php操作redis命令及代码实例大全
2020/11/19 PHP
解决jQuery插件tipswindown与hintbox冲突
2010/11/05 Javascript
javascript学习笔记(十九) 节点的操作实现代码
2012/06/20 Javascript
引入JS文件IE6报语法错误或缺少对象问题的解决方法
2014/01/09 Javascript
JS运动基础框架实例分析
2015/03/03 Javascript
JavaScript判断数组是否包含指定元素的方法
2015/07/01 Javascript
JS未跨域操作iframe里的DOM
2016/06/01 Javascript
HTML Table 空白单元格补全的简单实现
2016/10/13 Javascript
JavaScript闭包和范围实例详解
2016/12/19 Javascript
基于Nodejs利用socket.io实现多人聊天室
2017/02/22 NodeJs
微信小程序教程系列之新建页面(4)
2017/04/17 Javascript
Vue 去除路径中的#号
2018/04/19 Javascript
layer更改皮肤的实现方法
2019/09/11 Javascript
浅析AST抽象语法树及Python代码实现
2016/06/06 Python
python中requests小技巧
2017/05/10 Python
Python Numpy库datetime类型的处理详解
2019/07/13 Python
Python中base64与xml取值结合问题
2019/12/22 Python
python中导入 train_test_split提示错误的解决
2020/06/19 Python
PyCharm 光标变成黑块的解决方式
2021/02/06 Python
Python实现粒子群算法的示例
2021/02/14 Python
DHC中国官方购物网站:日本通信销售No.1化妆品
2016/08/20 全球购物
学校食堂采购员岗位职责
2013/12/05 职场文书
大学四年规划书范文
2013/12/27 职场文书
关于运动会的稿件
2014/02/02 职场文书
会议邀请书范文
2014/02/02 职场文书
幼儿教师培训感言
2014/03/08 职场文书
2014年十一国庆向国旗敬礼寄语
2014/04/11 职场文书
怎样拟定创业计划书
2014/05/01 职场文书
暑假学习心得体会
2014/09/02 职场文书
新闻学专业职业生涯规划范文:我的人生我做主
2014/09/12 职场文书
大学生心理健康教育心得体会
2016/01/12 职场文书
MySQL的InnoDB存储引擎的数据页结构详解
2022/03/03 MySQL
TypeScript 使用 Tuple Union 声明函数重载
2022/04/07 Javascript