PHP5 的对象赋值机制介绍


Posted in PHP onAugust 02, 2011
<?php 
class SimpleClass{ 
public $var = 'a default value'; 
public function displayVar() { 
echo $this->var; 
} 
} 
$instance = new SimpleClass(); 
$assigned = $instance; 
$reference =& $instance; 
$instance->var = '$assigned will have this value'; 
$instance = null; // $instance and $reference become null var_dump($instance);var_dump($reference);var_dump($assigned); 
var_dump($instance); 
var_dump($assigned); 
var_dump($reference); 
?>

php5 改写了OOP底层。当类生成一个实例(对象)的时候,返回值$instance并不是对象本身,而只是对象的一个id(或者资源句柄),所以,当$instance被赋值给$assigned的时候,$assigned也指向了这个对象,这有点像普通变量的引用(&)操作。所以,当对$instance初始化的时候,$assigned也被初始化了。但是,当$instance被销毁(=null)的时候,因为对应的对象还有一个句柄存在($assigned),所以对象并不会被销毁,析构函数也不会被触发。结果,var_dump($assigned)是对象的值,而$instance已经是空句柄,显示null。$reference因为与$instance有类似普通变量间的引用关系,所以也成为空句柄,显示 null。
PHP 相关文章推荐
PHP如何透过ODBC来存取数据库
Oct 09 PHP
隐藏X-Space个人空间下方版权方法隐藏X-Space个人空间标题隐藏X-Space个人空间管理版权方法
Feb 22 PHP
快速开发一个PHP扩展图文教程
Dec 12 PHP
php csv操作类代码
Dec 14 PHP
php操作SVN版本服务器类代码
Nov 27 PHP
深入了解PHP类Class的概念
Jun 14 PHP
php实现的九九乘法口诀表简洁版
Jul 28 PHP
PHPer 需要了解的 5 个 Composer 小技巧
Aug 18 PHP
php实现xml与json之间的相互转换功能实例
Jul 07 PHP
PHP框架Laravel中实现supervisor执行异步进程的方法
Jun 07 PHP
PHP 文件上传限制问题
Sep 01 PHP
PHP 技巧 * SVG 保存为图片(分享图生成)
Apr 02 PHP
利用PHP实现智能文件类型检测的实现代码
Aug 02 #PHP
10条PHP高级技巧[修正版]
Aug 02 #PHP
PHP获取url的函数代码
Aug 02 #PHP
给初学者的30条PHP最佳实践(荒野无灯)
Aug 02 #PHP
使用ThinkPHP自带的Http类下载远程图片到本地的实现代码
Aug 02 #PHP
linux下使用ThinkPHP需要注意大小写导致的问题
Aug 02 #PHP
理解和运用PHP中的多态性[译]
Aug 02 #PHP
You might like
PHP insert语法详解
2008/06/07 PHP
精美漂亮的php分页类代码
2013/04/02 PHP
PHP对文件夹递归执行chmod命令的方法
2015/06/19 PHP
PHP针对多用户实现更换头像功能
2016/09/04 PHP
phpcmsv9.0任意文件上传漏洞解析
2020/10/20 PHP
PHP后门隐藏的一些技巧总结
2020/11/04 PHP
JavaScript打开word文档的实现代码(c#)
2012/04/16 Javascript
js鼠标滑过弹出层的定位IE6bug解决办法
2012/12/26 Javascript
按下回车键指向下一个位置的一个函数代码
2014/03/10 Javascript
jquery常用操作小结
2014/07/21 Javascript
jQuery+HTML5实现图片上传前预览效果
2015/08/20 Javascript
jquery特效 点击展示与隐藏全文
2015/12/09 Javascript
jQuery Ajax 上传文件处理方式介绍(推荐)
2016/06/30 Javascript
JavaScript调试之console.log调试的一个小技巧分享
2017/08/07 Javascript
使用Fullpage插件快速开发整屏翻页的页面
2017/09/13 Javascript
浅析Vue.js 中的条件渲染指令
2018/11/19 Javascript
vue滚动固定顶部及修改样式的实例代码
2019/05/30 Javascript
JavaScript表格隔行变色和Tab标签页特效示例【附jQuery版】
2019/07/11 jQuery
原生js实现ajax请求和JSONP跨域请求操作示例
2020/03/14 Javascript
[02:54]DOTA2英雄基础教程 撼地者
2014/01/14 DOTA
Python的装饰器用法学习笔记
2016/06/24 Python
Python基于回溯法子集树模板解决野人与传教士问题示例
2017/09/11 Python
python中的内置函数max()和min()及mas()函数的高级用法
2018/03/29 Python
Python for循环生成列表的实例
2018/06/15 Python
关于阿里云oss获取sts凭证 app直传 python的实例
2019/08/20 Python
django创建超级用户时指定添加其它字段方式
2020/05/14 Python
keras中epoch,batch,loss,val_loss用法说明
2020/07/02 Python
关于元旦的广播稿
2014/02/16 职场文书
小学少先队辅导员述职报告
2015/01/10 职场文书
幼儿园教师节感谢信
2015/01/23 职场文书
中秋晚会致辞
2015/07/31 职场文书
党章党规党纪学习心得体会
2016/01/14 职场文书
小学生反邪教心得体会
2016/01/15 职场文书
「魔法少女伊莉雅」美游粘土人开订
2022/03/21 日漫
win11系统中dhcp服务异常什么意思? Win11 DHCP服务异常修复方法
2022/04/08 数码科技
Golang Elasticsearches 批量修改查询及发送MQ
2022/04/19 Golang