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获取http请求的头信息实现步骤
Dec 16 PHP
CI框架自动加载session出现报错的解决办法
Jun 17 PHP
PHP执行Curl时报错提示CURL ERROR: Recv failure: Connection reset by peer的解决方法
Jun 26 PHP
php缩放gif和png图透明背景变成黑色的解决方法
Oct 14 PHP
php通过exif_read_data函数获取图片的exif信息
May 21 PHP
PHP结合Jquery和ajax实现瀑布流特效
Jan 07 PHP
PHP反射机制原理与用法详解
Feb 15 PHP
PHP实现的数独求解问题示例
Apr 18 PHP
php读取XML的常见方法实例总结
Apr 25 PHP
PHP实现在windows下配置sendmail并通过mail()函数发送邮件的方法
Jun 20 PHP
PHP实现双链表删除与插入节点的方法示例
Nov 11 PHP
使用laravel和ajax实现整个页面无刷新的操作方法
Oct 03 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使用DOMDocument类生成HTML实例(包含常见标签元素)
2014/06/25 PHP
php+redis实现商城秒杀功能
2020/11/19 PHP
Javascript学习笔记7 原型链的原理
2010/01/11 Javascript
IE6浏览器下resize事件被执行了多次解决方法
2012/12/11 Javascript
jquery实现标签支持图文排列带上下箭头按钮的选项卡
2015/03/14 Javascript
JS+CSS实现自适应选项卡宽度的圆角滑动门效果
2015/09/15 Javascript
JS实现IE状态栏文字缩放效果代码
2015/10/24 Javascript
JS弹出对话框实现方法(三种方式)
2015/12/18 Javascript
最全面的JS倒计时代码
2016/09/17 Javascript
BootStrap表单验证实例代码
2017/01/13 Javascript
Vue.js实现一个SPA登录页面的过程【推荐】
2017/04/29 Javascript
详解webpack进阶之插件篇
2017/07/06 Javascript
node-sass安装失败的原因与解决方法
2017/09/04 Javascript
微信小程序调用摄像头隐藏式拍照功能
2018/08/22 Javascript
React Native开发封装Toast与加载Loading组件示例
2018/09/08 Javascript
js图数据结构处理 迪杰斯特拉算法代码实例
2019/09/11 Javascript
python 字符串split的用法分享
2013/03/23 Python
python实现连接mongodb的方法
2015/05/08 Python
栈和队列数据结构的基本概念及其相关的Python实现
2015/08/24 Python
详解duck typing鸭子类型程序设计与Python的实现示例
2016/06/03 Python
python实现屏保程序(适用于背单词)
2019/07/30 Python
关于老式浏览器兼容HTML5和CSS3的问题
2016/06/01 HTML / CSS
皇马官方商城:Real Madrid Store
2016/09/02 全球购物
妇科医生自荐信
2013/11/05 职场文书
实习心得体会
2014/01/02 职场文书
公司年会演讲稿范文
2014/01/11 职场文书
自我介绍演讲稿
2014/01/15 职场文书
买房协议书
2014/04/11 职场文书
《乡下孩子》教学反思
2014/04/17 职场文书
法学专业求职信
2014/07/15 职场文书
公司人事专员岗位职责
2014/08/11 职场文书
争先创优活动总结
2014/08/27 职场文书
2014党支部对照检查材料思想汇报
2014/10/05 职场文书
应届生个人的求职(自荐信范文2篇)
2019/08/23 职场文书
2019年暑期法院实习报告
2019/12/18 职场文书
MySQL中distinct与group by之间的性能进行比较
2021/05/26 MySQL