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 抓取新浪读书频道的小说并生成txt电子书的代码
Dec 18 PHP
php unset全局变量运用问题的深入解析
Jun 17 PHP
分享PHP header函数使用教程
Sep 05 PHP
php通过sort()函数给数组排序的方法
Mar 18 PHP
php中 ob_start等函数截取标准输出的方法
Jun 22 PHP
PHP实现查询两个数组中不同元素的方法
Feb 23 PHP
屏蔽PHP默认设置中的Notice警告的方法
May 20 PHP
php技巧小结【推荐】
Jan 19 PHP
详解php curl带有csrf-token验证模拟提交方法
Apr 18 PHP
PHP性能测试工具xhprof安装与使用方法详解
Apr 29 PHP
PHP实现关键字搜索后描红功能示例
Jul 03 PHP
Laravel框架源码解析之反射的使用详解
May 14 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模块memcached使用指南
2014/12/08 PHP
PHP基于MySQLI函数封装的数据库连接工具类【定义与用法】
2017/08/11 PHP
详解PHP swoole process的使用方法
2017/08/26 PHP
一个JS翻页效果
2007/07/23 Javascript
细说浏览器特性检测(2)-通用事件检测
2010/11/05 Javascript
JS上传图片前的限制包括(jpg jpg gif及大小高宽)等
2012/12/19 Javascript
解决ExtJS在chrome或火狐中正常显示在ie中不显示的浏览器兼容问题
2013/01/11 Javascript
利用jquery动画特效和css打造的侧边弹出垂直导航
2014/04/04 Javascript
JS 获取鼠标左右键的键值方法
2014/10/11 Javascript
jQuery的css()方法用法实例
2014/12/24 Javascript
如何减少浏览器的reflow和repaint
2015/02/26 Javascript
深入浅析Node.js 事件循环
2015/12/20 Javascript
基于Node.js实现nodemailer邮件发送
2016/01/26 Javascript
详解AngularJS中$http缓存以及处理多个$http请求的方法
2016/02/06 Javascript
jQuery 翻页组件yunm.pager.js实现div局部刷新的思路
2016/08/11 Javascript
jQuery中show与hide方法用法示例
2016/09/16 Javascript
AngularJS表单提交实例详解
2017/02/18 Javascript
原生JS中slice()方法和splice()区别
2017/03/06 Javascript
nodejs模块nodemailer基本使用-邮件发送示例(支持附件)
2017/03/28 NodeJs
JavaScript实现form表单的多文件上传
2020/03/27 Javascript
AngularJS使用ocLazyLoad实现js延迟加载
2017/07/05 Javascript
详解Node.js模板引擎Jade入门
2018/01/19 Javascript
Vue脚手架的简单使用实例
2018/07/10 Javascript
vue路由事件beforeRouteLeave及组件内定时器的清除方法
2018/09/29 Javascript
jQuery实现动态操作table行
2020/11/23 jQuery
vue实现树状表格效果
2020/12/29 Vue.js
vue 根据选择的月份动态展示日期对应的星期几
2021/02/06 Vue.js
C#返回当前系统所有可用驱动器符号的方法
2015/04/18 Python
tensorflow常用函数API介绍
2020/04/19 Python
Nordgreen英国官网:斯堪的纳维亚设计师手表
2018/10/24 全球购物
创业计划书中包含的9个方面
2013/12/26 职场文书
幼儿园教师工作感言
2014/02/15 职场文书
应聘英语教师求职信
2014/04/24 职场文书
领导干部考核评语
2015/01/04 职场文书
SQL Server中使用判断语句(IF ELSE/CASE WHEN )案例
2021/07/07 SQL Server
Java spring定时任务详解
2021/10/05 Java/Android