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 相关文章推荐
substr()函数中文版
Oct 09 PHP
PHP 作用域解析运算符(::)
Jul 27 PHP
常用的PHP数据库操作方法(MYSQL版)
Jun 08 PHP
PHP中数组的三种排序方法分享
May 07 PHP
基于PHP生成静态页的实现方法
May 10 PHP
探讨PHP JSON中文乱码的解决方法详解
Jun 06 PHP
php中stdClass的用法分析
Feb 27 PHP
PHP获取文件夹大小函数用法实例
Jul 01 PHP
Yii2.0 Basic代码中路由链接被转义的处理方法
Sep 21 PHP
PHP正则验证字符串是否为数字的两种方法并附常用正则
Feb 27 PHP
零基础php编程好学吗
Oct 11 PHP
php的无刷新操作实现方法分析
Feb 28 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 类商品秒杀计时实现代码
2010/05/05 PHP
php连接函数implode与分割explode的深入解析
2013/06/26 PHP
如何实现php图片等比例缩放
2015/07/28 PHP
PHP Yaf框架的简单安装使用教程(推荐)
2016/06/08 PHP
ThinkPHP5.0 图片上传生成缩略图实例代码说明
2018/06/20 PHP
PHP实现八皇后算法
2019/05/06 PHP
laravel-admin的图片删除实例
2019/09/30 PHP
JavaScript版代码高亮
2006/06/26 Javascript
json 实例详细说明教程
2009/10/31 Javascript
Javascript的一种模块模式
2010/09/08 Javascript
jQuery UI Autocomplete 体验分享
2012/02/14 Javascript
浅析Cookie中的Path与domain
2013/12/18 Javascript
使用ajax+jqtransform实现动态加载select
2014/12/01 Javascript
JavaScript驾驭网页-获取网页元素
2016/03/24 Javascript
Bootstrap Metronic完全响应式管理模板学习笔记
2016/07/08 Javascript
Highcharts入门之基本属性
2016/08/02 Javascript
Centos7 中 Node.js安装简单方法
2016/11/02 Javascript
jquery将标签元素的高设为屏幕的百分比
2017/04/19 jQuery
Vue2.x中的父子组件相互通信的实现方法
2017/05/02 Javascript
jQuery第一次运行页面默认触发点击事件的实例
2018/01/10 jQuery
Node.js实现mysql连接池使用事务自动回收连接的方法示例
2018/02/03 Javascript
JavaScript时间与时间戳的转换操作实例分析
2018/12/07 Javascript
JavaScript遍历查找数组中最大值与最小值的方法示例
2019/05/24 Javascript
vue + typescript + video.js实现 流媒体播放 视频监控功能
2019/07/07 Javascript
[04:04]DOTA2亚洲邀请赛比赛场馆&酒店全攻略
2017/03/23 DOTA
在Python的Flask框架中验证注册用户的Email的方法
2015/09/02 Python
python 实现一个贴吧图片爬虫的示例
2017/10/12 Python
matplotlib设置legend图例代码示例
2017/12/19 Python
pycharm运行出现ImportError:No module named的解决方法
2018/10/13 Python
Python编写带选项的命令行程序方法
2019/08/13 Python
pytorch:torch.mm()和torch.matmul()的使用
2019/12/27 Python
使用Python爬虫库requests发送请求、传递URL参数、定制headers
2020/01/25 Python
中国跨境电商:Tomtop
2017/03/16 全球购物
Tech21美国/加拿大:英国NO.1防摔保护壳品牌
2018/01/20 全球购物
施工安全承诺书
2014/05/22 职场文书
MySQL下使用Inplace和Online方式创建索引的教程
2021/05/26 MySQL