在 PHP 里面,复制一个对象,其实就是去引用一个对象,如果你改变了复制的对象里的属性,原来被复制的对象也会改变。也就是这两个对象引用的其实是一个东西,改变了其中的一个,另一个也会跟着改变。

如果想真正的去复制一个对象,我们可以使用克隆,这样两个对象会是完全不同的东西,相互没有任何的影响。下面我们可以通过几个演示来理解一下复制和克隆对象。

先去创建一个 Track 对象的实例 ... 叫它 magic ... 再去设置一下这个对象的 track_name 属性的值。

$magic = new Track();

$magic->track_name = 'Magic';

下面,我们可以去复制一份这个 magic 对象 ... 叫做 magic_mix ..

$magic_mix = $magic;

再把这两个对象使用 print_r 输出到屏幕上 ...

print_r($magic);

print_r($magic_mix);

你会看到这们的 track_name 这个属性的值都是 Magic 这个字符串 ... 下面,我们可以再去修改一下 ... 回到 index.php ... 去改一下复制的这个 $magic_mix 这个对象的 track_name 属性的值 ... 改成 Magic Mix

$magic_mix->track_name = 'Magic Mix';

保存 ... 回到浏览器 ... 现在 ... magic 还有 magic_mix 这两个对象里的 track_name 这个属性的值 ... 都会是Magic Mix .... 因为这两个对象指向的是同一个东西 ... 所以,我们使用 magic_mix 这个对象改变了 track_name 的值 ... 另外那个 magic 对象也会受到影响 ...

想要它们互不相干的话 ... 可以使用克隆 ...

使用 clone 这个关键词 ... 去克隆一个 magic 对象 ... 然后把这个克隆之后的对象交给 magic_mix ...

在下面,还是修改一下 magic_mix 里的 track_name ...

再回到浏览器 ....

这回你会发现 ... magic 对象里面的 track_name ,还有 magic_mix 这个对象里面的 track_name 是不同的值。

php中克隆对象,复制与克隆对象《 PHP 面向对象 》相关推荐

  1. java对象复制到新对象_java – 使用新生成的ID将Hibernate复制对象值复制到新对象中...

    我正在使用带有一些嵌套表的单列pk的关系数据库.我需要在项目中添加简单的归档.归档仅在应用程序到达特定状态时发生,因此我希望将现有的hibernate对象复制到新实例中,新实例将使用新ID保存,同时保 ...

  2. python对象复制_Python 拷贝对象(深拷贝deepcopy与浅拷贝copy)

    源码阅读系列:EventBus title: 源码阅读系列:EventBus date: 2016-12-22 16:16:47 tags: 源码阅读 --- EventBus 是人们在日常开发中经常 ...

  3. java反射克隆对象_Java反射 - 2(对象复制,父类域,内省)

    为什么要复制对象?假设有个类Car,包含name,color2个属性,那么将car1对象复制给car2对象,只需要car2.setName(car1.getName)与car2.setColor(ca ...

  4. java复制两个对象报异常_Java中复制两个不同类的对象的属性

    Apache的开源包BeanUtils用来复制两个对象的属性,要使用这个Apache的开源包,要先去官网下载commons-beanutils-1.X.jar包,http://www.apache.o ...

  5. Java反射 - 2(对象复制,父类域,内省)

    为什么要复制对象?假设有个类Car,包含name,color2个属性,那么将car1对象复制给car2对象,只需要car2.setName(car1.getName)与car2.setColor(ca ...

  6. php对象复制,PHP 对象复制 - 对象复制 - phpStudy

    对象复制 在多数情况下,我们并不需要完全复制一个对象来获得其中属性.但有一个情况下确实需要:如果你有一个 GTK窗口对象,该对象持有窗口相关的资源.你可能会想复制一个新的窗口,保持所有属性与原来的窗口 ...

  7. C#中的深复制和浅复制(在C#中克隆对象)

    C#中的深复制和浅复制(在C#中克隆对象) 转载于:https://www.cnblogs.com/dalovess/p/7002947.html

  8. php 克隆对象,php中对象的复制与克隆

    * 对象的复制与克隆 * 1.默认情况下,对象是引用传递(实际上是对象标识符的复制,后面会详细说) * 2.也就是说二个对象变量实际上是引用的是同一个对象 * 3.如果要创建一个新的对象,必须使用cl ...

  9. Javascript中的对象拷贝(对象复制/克隆)

    Javascript中的对象拷贝(对象复制/克隆) 李俊才 CSDN:jcLee95 邮箱:291148484@163.com 1. 对象的引用 要说"拷贝"还要先说"引 ...

最新文章

  1. 关于在线预览word,excel,ppt,pdf的需求处理方法。
  2. APM - Hello Javaagent
  3. 机房收费--充值和退卡
  4. solver.prototxt参数说明(三)
  5. Python科学计算(一)环境简介——Anaconda Python
  6. jeewx 团队微信开发招募新人
  7. jqGrid编辑—公共规则【附视频、ppt、源码】
  8. pytorch学习笔记(五):线性回归的简洁实现
  9. 悟空 mobile.php,悟空CRM无需任何权限的SQL注入漏洞2(ThinkPHP特性)
  10. python esp8266 ssd1306_micropython esp8266+ssd1306(OLED) 显示中文(示例)
  11. oracle磁带库清洁带标签,分享那些在磁带库上爬过的坑
  12. hdu 5510 strstr/find/KMP
  13. markdown基础语法
  14. 云计算采用的各种虚拟化技术比较
  15. 适合打游戏的计算机,最适合玩游戏的笔记本电脑 广受好评的三款笔记本
  16. MyCat 学习笔记 第十五篇 . 数据分片后的迁移验证
  17. 陈强教授《机器学习及R应用》课程 第十四章作业
  18. Oracle客户端工具介绍
  19. 数据挖掘(一)频繁模式挖掘算法的实现和对比
  20. 常用的软件测试工具大全

热门文章

  1. java程序员的大数据之路(2):创建第一个Hadoop程序
  2. 基于ZTMap3D建设智慧楼宇建筑数字孪生运维管理平台
  3. 现货黄金软件屏幕大小怎么调?
  4. 2021-06-03Leetcode 438.找到字符串中所有字母异位词
  5. PowerPCB(PADS)常见问题全集
  6. 客人刷卡显示成功但是服务器连接显示超时,POS机刷卡故障解决方案.xls
  7. 工业相机 linux驱动软件,机器视觉软件及工业相机软件下载 - pylon, ToF 等 | Basler...
  8. combus通讯_rofibus光纤通讯模块
  9. 生产制造企业车间生产管理系统分析介绍
  10. 俄罗斯方块的设计与实现