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 相关文章推荐
生成sessionid和随机密码的例子
Oct 09 PHP
追求程序速度,而不是编程的速度
Apr 23 PHP
php is_file()和is_dir()用于遍历目录时用法注意事项
Mar 02 PHP
PHP输出时间差函数代码
Jan 28 PHP
关于url地址传参数时字符串有回车造成页面脚本赋值失败的解决方法
Jun 28 PHP
PHP基于GD库的缩略图生成代码(支持jpg,gif,png格式)
Jun 19 PHP
php从数据库查询结果生成树形列表的方法
Apr 17 PHP
php导出中文内容excel文件类实例
Jul 06 PHP
php 指定范围内多个随机数代码实例
Jul 18 PHP
php flush无效,IIS7下php实时输出的方法
Aug 25 PHP
设定php简写功能的方法
Nov 28 PHP
laravel框架分组控制器和分组路由实现方法示例
Jan 25 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
PHPMailer安装方法及简单实例
2008/11/25 PHP
解析posix与perl标准的正则表达式区别
2013/06/17 PHP
PHP curl CURLOPT_RETURNTRANSFER参数的作用使用实例
2015/02/07 PHP
php+ajax实现无刷新数据分页的办法
2015/11/02 PHP
php文件上传、下载和删除示例
2020/08/28 PHP
Zend Framework上传文件重命名的实现方法
2016/11/25 PHP
js变量作用域及可访问性的探讨
2006/11/23 Javascript
jQuery链式操作如何实现以及为什么要用链式操作
2013/01/17 Javascript
Jquery多选框互相内容交换的实例代码
2013/07/04 Javascript
jquery如何判断某元素是否具备指定的样式
2013/11/05 Javascript
JavaScript onkeydown事件入门实例(键盘某个按键被按下)
2014/10/17 Javascript
js实现文件上传表单域美化特效
2015/11/02 Javascript
基于Jquery实现焦点图淡出淡入效果
2015/11/30 Javascript
用jQuery向div中添加Html文本内容的简单实现
2016/07/13 Javascript
es6的数字处理的方法(5个)
2017/03/16 Javascript
React中常见的动画实现的几种方式
2018/01/10 Javascript
Node.js Buffer模块功能及常用方法实例分析
2019/01/05 Javascript
Node.js学习之内置模块fs用法示例
2020/01/22 Javascript
2020京东618叠蛋糕js脚本(亲测好用)
2020/06/02 Javascript
VueQuillEditor富文本上传图片(非base64)
2020/06/03 Javascript
python列出目录下指定文件与子目录的方法
2015/07/03 Python
在Django的视图中使用form对象的方法
2015/07/18 Python
python 网络编程常用代码段
2016/08/28 Python
Django Web开发中django-debug-toolbar的配置以及使用
2018/05/06 Python
python实现QQ空间自动点赞功能
2019/04/09 Python
Python的Tkinter点击按钮触发事件的例子
2019/07/19 Python
使用Python制作新型冠状病毒实时疫情图
2020/01/28 Python
如何真正的了解python装饰器
2020/08/14 Python
IE下实现类似CSS3 text-shadow文字阴影的几种方法
2011/05/11 HTML / CSS
HTML5 Canvas中使用用路径描画圆弧
2015/01/01 HTML / CSS
配件采购员岗位职责
2013/12/03 职场文书
基层干部2014全国两会学习心得体会
2014/03/10 职场文书
小学生国庆节演讲稿
2014/09/05 职场文书
撤诉状格式范本
2015/05/19 职场文书
单位政审意见范文
2015/06/04 职场文书
浅谈Python 中的复数问题
2021/05/19 Python