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 获取客户端的真实ip
Nov 30 PHP
php array_search() 函数使用
Apr 13 PHP
一个PHP缓存类代码(附详细说明)
Jun 09 PHP
深入php define()函数以及defined()函数的用法详解
Jun 05 PHP
PHP5中实现多态的两种方法实例分享
Apr 21 PHP
个人写的PHP验证码生成类分享
Aug 21 PHP
PHP进程同步代码实例
Feb 12 PHP
学习php设计模式 php实现访问者模式(Visitor)
Dec 07 PHP
yii2 页面底部加载css和js的技巧
Apr 21 PHP
100行PHP代码实现socks5代理服务器
Apr 28 PHP
php实现批量删除挂马文件及批量替换页面内容完整实例
Jul 08 PHP
PHP基于phpqrcode类生成二维码的方法示例详解
Aug 07 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之第七天
2006/10/09 PHP
php删除一个路径下的所有文件夹和文件的方法
2018/02/07 PHP
理解Javascript_11_constructor实现原理
2010/10/18 Javascript
js querySelector和getElementById通过id获取元素的区别
2012/04/20 Javascript
JS实现淘宝幻灯片效果的实现方法
2013/03/22 Javascript
jquery 淡入淡出效果的简单实现
2014/02/07 Javascript
js不能获取隐藏的div的宽度只能先显示后获取
2014/09/04 Javascript
jQuery中prepend()方法用法实例
2014/12/25 Javascript
jQuery选择器源码解读(七):elementMatcher函数
2015/03/31 Javascript
jQuery+json实现的简易Ajax调用实例
2015/12/14 Javascript
vue中七牛插件使用的实例代码
2017/07/28 Javascript
vue项目实战总结篇
2018/02/11 Javascript
JavaScript日期工具类DateUtils定义与用法示例
2018/09/03 Javascript
解决Vue中引入swiper,在数据渲染的时候,发生不滑动的问题
2018/09/27 Javascript
详解vue-cli 脚手架 安装
2019/04/16 Javascript
Vue form表单动态添加组件实战案例
2019/09/02 Javascript
实例讲解React 组件生命周期
2020/07/08 Javascript
[44:40]2018DOTA2亚洲邀请赛3月30日 小组赛A组Liquid VS OG
2018/03/31 DOTA
[45:59]完美世界DOTA2联赛PWL S2 FTD vs GXR 第二场 11.22
2020/11/24 DOTA
Python os模块介绍
2014/11/30 Python
python能做什么 python的含义
2019/10/12 Python
python匿名函数lambda原理及实例解析
2020/02/07 Python
python GUI框架pyqt5 对图片进行流式布局的方法(瀑布流flowlayout)
2020/03/12 Python
TensorFlow实现模型断点训练,checkpoint模型载入方式
2020/05/26 Python
基于python实现破解滑动验证码过程解析
2020/05/28 Python
python实现扫雷游戏的示例
2020/10/20 Python
pandas apply使用多列计算生成新的列实现示例
2021/02/24 Python
百丽国际旗下购物网站:优购
2017/02/28 全球购物
阳光体育:Sunny Sports(购买露营和远足设备)
2018/08/07 全球购物
俄罗斯在线服装店:STOLNIK
2021/03/07 全球购物
VC++笔试题
2014/10/13 面试题
施工资料员岗位职责
2014/01/06 职场文书
球队口号
2014/06/18 职场文书
创业计划书之便利店
2019/09/05 职场文书
WordPress多语言翻译插件 - WPML使用教程
2021/04/01 PHP
详解JSON.parse和JSON.stringify用法
2022/02/18 Javascript