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 相关文章推荐
一个简单的MySQL数据浏览器
Oct 09 PHP
php中变量及部分适用方法
Mar 27 PHP
php面向对象全攻略 (二) 实例化对象 使用对象成员
Sep 30 PHP
PHP 通过Socket收发十六进制数据的实现代码
Aug 16 PHP
phpmyadmin打开很慢的解决方法
Apr 21 PHP
smarty模板局部缓存方法使用示例
Jun 17 PHP
ThinkPHP自动填充实现无限级分类的方法
Aug 22 PHP
php中mysql操作buffer用法详解
Mar 19 PHP
PHP开发中AJAX技术的简单应用
Dec 11 PHP
PHP信号量基本用法实例详解
Feb 12 PHP
Zend Framework教程之Zend_Controller_Plugin插件用法详解
Mar 07 PHP
PHP序列化和反序列化深度剖析实例讲解
Dec 29 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
php ci框架验证码实例分析
2013/06/26 PHP
destoon数据库表说明汇总
2014/07/15 PHP
php中mkdir()函数的权限问题分析
2016/09/24 PHP
JavaScript通过元素索引号删除数组中对应元素的方法
2015/03/18 Javascript
javascript 实现map集合
2015/04/03 Javascript
JQuery包裹DOM节点的方法
2015/06/11 Javascript
JS把内容动态插入到DIV的实现方法
2016/07/19 Javascript
JS基于HTML5的canvas标签实现炫目的色相球动画效果实例
2016/08/24 Javascript
AngularJS入门教程之Helloworld示例
2016/12/25 Javascript
Chrome调试折腾记之JS断点调试技巧
2017/09/11 Javascript
Django+Vue跨域环境配置详解
2018/07/06 Javascript
jQuery实现的老虎机跑动效果示例
2018/12/29 jQuery
element-ui表格合并span-method的实现方法
2019/05/21 Javascript
使用flow来规范javascript的变量类型
2019/09/12 Javascript
node省市区三级数据性能测评实例分析
2019/11/06 Javascript
解决ele ui 表格表头太长问题的实现
2019/11/13 Javascript
vue使用nprogress实现进度条
2019/12/09 Javascript
js实现视图和数据双向绑定的方法分析
2020/02/05 Javascript
Python中用Decorator来简化元编程的教程
2015/04/13 Python
Python删除空文件和空文件夹的方法
2015/07/14 Python
详解Django框架中用户的登录和退出的实现
2015/07/23 Python
python实现得到当前登录用户信息的方法
2019/06/21 Python
PIL对上传到Django的图片进行处理并保存的实例
2019/08/07 Python
python列表插入append(), extend(), insert()用法详解
2019/09/14 Python
使用Python将图片转正方形的两种方法实例代码详解
2020/04/29 Python
Python实现小黑屋游戏的完整实例
2021/01/06 Python
Expedia爱尔兰:酒店、机票、租车及廉价假期
2017/01/02 全球购物
Sneaker Studio波兰:购买运动鞋
2018/04/28 全球购物
美国购买当代和现代家具网站:MODTEMPO
2018/07/20 全球购物
REISS美国官网:伦敦最受欢迎的时尚品牌
2019/08/16 全球购物
仓库管理员岗位职责
2014/03/19 职场文书
航海技术专业毕业生求职信
2014/04/06 职场文书
精彩的演讲稿开头
2014/05/08 职场文书
七夕情人节问候语
2015/11/11 职场文书
原生JS封装vue Tab切换效果
2021/04/28 Vue.js
为什么MySQL8新特性会修改自增主键属性
2022/04/18 MySQL