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 相关文章推荐
yii框架源码分析之创建controller代码
Jun 28 PHP
Array of country list in PHP with Zend Framework
Oct 17 PHP
ThinkPHP之A方法实例讲解
Jun 20 PHP
PHP输出图像imagegif、imagejpeg与imagepng函数用法分析
Nov 14 PHP
Yii框架实现记录日志到自定义文件的方法
May 23 PHP
简单实现php上传文件功能
Sep 21 PHP
PHP面向对象多态性实现方法简单示例
Sep 27 PHP
php闭包中使用use声明变量的作用域实例分析
Aug 09 PHP
PHP设计模式之PHP迭代器模式讲解
Mar 22 PHP
thinkphp5框架实现的自定义扩展类操作示例
May 16 PHP
使用PHP开发留言板功能
Nov 19 PHP
浅析PHP反序列化中过滤函数使用不当导致的对象注入问题
Feb 15 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中Cannot send session cache limiter 的问题的方法
2007/04/27 PHP
php Notice: Undefined index 错误提示解决方法
2010/08/29 PHP
比较全面的PHP数组的使用方法小结
2010/09/23 PHP
PHP写的资源下载防盗链类分享
2014/05/12 PHP
php之readdir函数用法实例
2014/11/13 PHP
ThinkPHP中__initialize()和类的构造函数__construct()用法分析
2014/11/29 PHP
php中smarty区域循环的方法
2015/06/11 PHP
php 将json格式数据转换成数组的方法
2018/08/21 PHP
PHP利用递归函数实现无限级分类的方法
2019/03/22 PHP
在线游戏大家来找茬II
2006/09/30 Javascript
使用JS实现jQuery的addClass, removeClass, hasClass函数功能
2014/10/31 Javascript
bootstrap网页框架的使用方法
2016/05/10 Javascript
jQuery实现邮箱下拉列表自动补全功能
2016/09/08 Javascript
JS判断来路是否是百度等搜索索引进行弹窗或自动跳转的实现代码
2016/10/09 Javascript
JavaScript登录验证码的实现
2016/10/27 Javascript
Javascript计算二维数组重复值示例代码
2016/12/18 Javascript
jQuery插件FusionCharts实现的Marimekko图效果示例【附demo源码】
2017/03/24 jQuery
JS库之Particles.js中文开发手册及参数详解
2017/09/13 Javascript
Angularjs之ngModel中的值验证绑定方法
2018/09/13 Javascript
SpringBoot+Vue开发之Login校验规则、实现登录和重置事件
2020/10/19 Javascript
[15:20]DOTA2亚洲邀请赛总决赛开幕式表演:羽泉献唱
2017/04/05 DOTA
[02:23]1个至宝=115个英雄特效 最“绿”至宝拉比克“魔导师密钥”登场
2018/12/29 DOTA
简单分析Python中用fork()函数生成的子进程
2015/05/04 Python
利用python实现短信和电话提醒功能的例子
2019/08/08 Python
关于Flask项目无法使用公网IP访问的解决方式
2019/11/19 Python
class类在python中获取金融数据的实例方法
2020/12/10 Python
html5如何在Canvas中实现自定义路径动画示例
2017/09/18 HTML / CSS
Canvas实现保存图片到本地的示例代码
2018/06/28 HTML / CSS
加拿大拼图大师:Puzzle Master
2020/12/28 全球购物
瀑布模型都有哪些优缺点
2014/06/23 面试题
建筑工程技术应届生求职信
2013/11/17 职场文书
给幼儿园老师的表扬信
2014/01/19 职场文书
庆六一活动总结
2014/08/29 职场文书
高中课前三分钟演讲稿
2014/09/13 职场文书
民主生活会剖析材料
2014/09/30 职场文书
写给纪委的违纪检讨书
2015/05/05 职场文书