PHP中对象的传值方式
2024-09-28 02:31:09
对象的传值方式:
为什么对于对象,值传递和引用传递,这个情况下,他们似乎没有区别???
这要从对象的数据的存储方式来理解:
$o1 = new C1(); //这里创建一个对象o1,其存储结果如图所示:
这里,实际上,变量$o1中,存储的数据只是一个“对象编号#1”,这个对象编号,才会去指向对象数据new C1(); 该编号数据,我们不能控制,只是系统内部的分配。
则$o2 = $o1; 作为值传递,实际复制的是该对象的编号:结果情形是:
在语法上,对对象变量的属性进行操作,其实就是通过该编号来指向对象而操作的。
$o1->p1 = 2; //此时,就是通过对象编号#1去修改了对象(new C1() )本身的内部数据.
echo $o2->p1; //此时相当于取得变量$o2所包含的编号#1中所指向的对象(new C1() )的内部数据p1
那么,对应引用传递,情况是这样的:
$o3 = new C1(); //又创建一个对象,图示如下:
然后:
$o4 = & $o3; //引用传递,则其后,他们的关系图示为:
所以:
$o3->p1 = 2; //
echo $o4->p1; //输出2
最新文章
- mybatis自增长插入id
- TextBoxFor控件的扩展---Bootstrap在mvc上的应用
- 一步一步教你elasticsearch在windows下的安装
- 7 HandlerSet 处理程序链表类——Live555源码阅读(一)基本组件类
- Android-->;Genymotion虚拟机(模拟器)的配置
- [Android设计模式]Android退出应用程序终极方法
- (转)实战Memcached缓存系统(2)Memcached Java API基础之MemcachedClient
- tomcat启动正常,404. Eclipse没有正确部署工程项目
- workflow4.0学习资料
- Arcgis android - Installation error: INSTALL_FAILED_INSUFFICIENT_STORAGE
- <;Win32_17>;集音频和视频播放功能于一身的简易播放器
- java 强弱引用
- 对List中每个对象元素按时间顺序排序
- modbus学习笔记——帧
- Oracle GoldenGate 18.1 支持的DB和OS列表
- 基于前台vue,后台是spring boot的压缩图片上传
- 将ASP.NET网站部署到服务器IIS上
- MTK 预置apk
- 如何让div在整个页面中居中?
- 用SNMP实现对大型网络的轻松管理!
热门文章
- &#39;express&#39;不是内部或外部命令, 也不是可运行的程序, 或批处理文件
- IDEA-Debug调试操作
- 20155206 《JAVA程序设计》实验二(JAVA面向对象程序设计)实验报告
- day2 Ubuntu配置源
- GlusterFS学习之路(三)客户端挂载和管理GlusterFS卷
- STM32L476的RTC使用问题记录
- 搜索引擎ElasticSearch系列(一): ElasticSearch2.4.4环境搭建
- python基本数据类型2
- 面试之HTTP基础(不断完善中)
- C#与mongoDB初始环境搭建