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实现的遍历文件夹下所有文件,编辑删除
Jan 05 PHP
php 数组使用详解 推荐
Jun 02 PHP
ajax php传递和接收变量实现思路及代码
Dec 19 PHP
PHP数据类型之整数类型、浮点数的介绍
Apr 28 PHP
PHP Session 变量的使用方法详解与实例代码
Sep 11 PHP
PHP获取中英混合字符串长度的方法
Jun 07 PHP
Yii实现MySQL多数据库和读写分离实例分析
Dec 03 PHP
php实现的IMEI限制的短信验证码发送类
May 05 PHP
深入浅析用PHP实现MVC
Mar 02 PHP
php HTML无刷新提交表单
Apr 05 PHP
php中strlen和mb_strlen用法实例分析
Nov 12 PHP
laravel框架中控制器的创建和使用方法分析
Nov 23 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 动态多文件上传
2009/01/18 PHP
PHP调用Webservice实例代码
2011/07/29 PHP
javascript add event remove event
2008/04/07 Javascript
jquer之ajaxQueue简单实现代码
2011/09/15 Javascript
JavaScript之自定义类型
2012/05/04 Javascript
根据配置文件加载js依赖模块
2014/12/29 Javascript
NODE.JS跨域问题的完美解决方案
2016/10/20 Javascript
jQuery操作复选框(CheckBox)的取值赋值实现代码
2017/01/10 Javascript
jQuery事件详解
2017/02/23 Javascript
vue-cli 3.x 配置Axios(proxyTable)跨域代理方法
2018/09/19 Javascript
解决element ui select下拉框不回显数据问题的解决
2019/02/20 Javascript
微信小程序常见页面跳转操作简单示例
2019/05/01 Javascript
Vue使用Proxy监听所有接口状态的方法实现
2019/06/07 Javascript
Vue+Typescript中在Vue上挂载axios使用时报错问题
2019/08/07 Javascript
返回上一个url并刷新界面的js代码
2020/09/12 Javascript
[04:12]第二届DOTA2亚洲邀请赛选手传记-Newbee.Sccc
2017/04/03 DOTA
在Python中测试访问同一数据的竞争条件的方法
2015/04/23 Python
Python利用正则表达式匹配并截取指定子串及去重的方法
2015/07/30 Python
Python实现将不规范的英文名字首字母大写
2016/11/15 Python
Python元组常见操作示例
2019/02/19 Python
Python实现的银行系统模拟程序完整案例
2019/04/12 Python
Django模型序列化返回自然主键值示例代码
2019/06/12 Python
Python3离线安装Requests模块问题
2019/10/13 Python
tensorflow没有output结点,存储成pb文件的例子
2020/01/04 Python
python删除指定列或多列单个或多个内容实例
2020/06/28 Python
Myprotein葡萄牙官方网站:英国优质运动营养品牌
2016/09/12 全球购物
荷兰包包购物网站:The Little Green Bag
2018/03/17 全球购物
跟单业务员岗位职责
2014/03/08 职场文书
论文评语大全
2014/04/29 职场文书
市场开发与营销专业求职信范文
2014/05/01 职场文书
企业文化理念标语
2014/06/10 职场文书
预备党员学习十八届三中全会精神思想汇报
2014/09/13 职场文书
大学生社会服务心得体会
2016/01/22 职场文书
2016年基层党支部书记公开承诺书
2016/03/25 职场文书
大学生自我鉴定怎么写
2019/05/07 职场文书
mysql聚集索引、辅助索引、覆盖索引、联合索引的使用
2022/02/12 MySQL