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 多个submit提交表单 处理方法
Jul 07 PHP
将文件夹压缩成zip文件的php代码
Dec 14 PHP
PHP include_path设置技巧分享
Jul 03 PHP
php切割页面div内容的实现代码分享
Jul 31 PHP
hadoop中一些常用的命令介绍
Jun 19 PHP
6种php上传图片重命名的方法实例
Nov 04 PHP
分享常见的几种页面静态化的方法
Jan 08 PHP
ThinkPHP使用Smarty第三方插件方法小结
Mar 19 PHP
使用ucenter实现多站点同步登录的讲解
Mar 21 PHP
phpStorm+XDebug+chrome 配置详解
Apr 01 PHP
PHP swoole和redis异步任务实现方法分析
Aug 12 PHP
PHP超全局变量实现原理及代码解析
Sep 01 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
《五等分的花嫁》漫画完结!2020年10月第2期TV动画制作组换血!
2020/03/06 日漫
一个用于MySQL的PHP XML类
2006/10/09 PHP
php中拷贝构造函数、赋值运算符重载
2012/07/25 PHP
php中导出数据到excel时数字变为科学计数的解决方法
2013/02/03 PHP
Codeigniter实现多文件上传并创建多个缩略图
2014/06/12 PHP
php用户注册时常用的检验函数实例总结
2014/12/22 PHP
TP5(thinkPHP框架)实现后台清除缓存功能示例
2019/05/29 PHP
转自Jquery官方 jQuery1.1.3发布,速度提升800%,体积保持20K
2007/08/19 Javascript
js window.print实现打印特定控件或内容
2013/09/16 Javascript
JQGrid的用法解析(列编辑,添加行,删除行)
2013/11/08 Javascript
javascript的alert box在java中如何显示多行
2014/05/18 Javascript
使用JavaScript为Kindeditor自定义按钮增加Audio标签
2016/03/18 Javascript
input 禁止输入特殊字符的四种实现方式
2016/08/24 Javascript
BootStrap与Select2使用小结
2017/02/17 Javascript
jquery表单验证实例仿Toast提示效果
2017/03/03 Javascript
原生JS实现自定义滚动条效果
2020/10/27 Javascript
JavaScript仿微信(电话)联系人列表滑动字母索引实例讲解(推荐)
2017/08/16 Javascript
JavaScript实现body内任意节点的自定义属性功能示例
2017/09/18 Javascript
浅谈Node.js 沙箱环境
2018/05/15 Javascript
JavaScript交换变量常用4种方法解析
2020/09/02 Javascript
原生JavaScript实现贪吃蛇游戏
2020/11/04 Javascript
[01:19]2014DOTA2国际邀请赛 采访TITAN战队ohaiyo 能赢DK很幸运
2014/07/12 DOTA
Python3.2中Print函数用法实例详解
2015/05/19 Python
pandas Dataframe行列读取的实例
2018/06/08 Python
python去掉 unicode 字符串前面的u方法
2018/10/21 Python
python 实现倒排索引的方法
2018/12/25 Python
基于Python实现船舶的MMSI的获取(推荐)
2019/10/21 Python
python实现计算器功能
2019/10/31 Python
ALLSAINTS英国官网:伦敦新锐潮流品牌
2016/09/19 全球购物
武汉世纪畅想数字传播有限公司.NET笔试题
2014/07/22 面试题
工程管理专业毕业生自荐信
2014/01/24 职场文书
清华大学自主招生自荐信
2014/01/29 职场文书
集中整治工作方案
2014/05/01 职场文书
2014年幼儿园老师工作总结
2014/12/05 职场文书
文员岗位职责范本
2015/04/16 职场文书
redis 查看所有的key方式
2021/05/07 Redis