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 相关文章推荐
一个域名查询的程序
Oct 09 PHP
一篇入门的php Class 文章
Apr 04 PHP
php+mysql开源XNA 聚合程序发布 下载
Jul 13 PHP
php更改目录及子目录下所有的文件后缀扩展名的代码
Oct 12 PHP
一些php项目中比较通用的php自建函数的详解
Jun 06 PHP
php制作动态随机验证码
Feb 12 PHP
typecho插件编写教程(二):写一个新插件
May 28 PHP
PHP实现文件上传与下载实例与总结
Mar 13 PHP
thinkPHP使用pclzip打包备份mysql数据库的方法
Apr 30 PHP
利用PHP命令行模式采集股票趋势信息
Aug 09 PHP
PHP目录与文件操作技巧总结(创建,删除,遍历,读写,修改等)
Sep 11 PHP
php单元测试phpunit入门实例教程
Nov 17 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
Yii2 ActiveRecord多表关联及多表关联搜索的实现
2016/06/30 PHP
laravel5创建service provider和facade的方法详解
2016/07/26 PHP
PHP实现搜索时记住状态的方法示例
2018/05/11 PHP
PHP 爬取网页的主要方法
2018/07/13 PHP
js弹窗代码 可以指定弹出间隔
2010/07/03 Javascript
Function.prototype.bind用法示例
2013/09/16 Javascript
Bootstrap和Java分页实例第一篇
2016/12/23 Javascript
前端编码规范(3)JavaScript 开发规范
2017/01/21 Javascript
js replace()去除代码中空格的实例
2017/02/14 Javascript
使用AngularJS2中的指令实现按钮的切换效果
2017/03/27 Javascript
纯原生js实现贪吃蛇游戏
2020/04/16 Javascript
Angular2 父子组件数据通信实例
2017/06/22 Javascript
基于rem的移动端响应式适配方案(详解)
2017/07/07 Javascript
Vue 实现双向绑定的四种方法
2018/03/16 Javascript
JavaScript中Dom操作实例详解
2019/07/08 Javascript
vue使用showdown并实现代码区域高亮的示例代码
2019/10/17 Javascript
Vue中jsx不完全应用指南小结
2019/11/01 Javascript
[04:42]2015国际邀请赛CDEC战队晋级之路
2015/08/13 DOTA
python抓取网页中的图片示例
2014/02/28 Python
开始着手第一个Django项目
2015/07/15 Python
Python实现二维数组按照某行或列排序的方法【numpy lexsort】
2017/09/22 Python
Python实现购物车购物小程序
2018/04/18 Python
Django中的ajax请求
2018/10/19 Python
python:目标检测模型预测准确度计算方式(基于IoU)
2020/01/18 Python
使用 Python 处理3万多条数据只要几秒钟
2020/01/19 Python
Python描述符descriptor使用原理解析
2020/03/21 Python
属性与 @property 方法让你的python更高效
2020/09/21 Python
Python解析微信dat文件的方法
2020/11/30 Python
优质美利奴羊毛袜,不只是徒步旅行:Darn Tough Vermont
2018/11/05 全球购物
实现向右循环移位
2014/07/31 面试题
预备党员思想汇报范文
2013/12/29 职场文书
安全生产专项整治方案
2014/05/06 职场文书
先进学校事迹材料
2014/12/30 职场文书
MySQL优化及索引解析
2022/03/17 MySQL
golang连接MySQl使用sqlx库
2022/04/14 Golang
Win10开机修复磁盘错误怎么跳过?Win10关闭开机磁盘检查的方法
2022/09/23 数码科技