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 相关文章推荐
第十节 抽象方法和抽象类 [10]
Oct 09 PHP
如何正确理解PHP的错误信息
Oct 09 PHP
php桌面中心(三) 修改数据库
Mar 11 PHP
Yii实现MySQL多数据库和读写分离实例分析
Dec 03 PHP
如何正确配置Nginx + PHP
Jul 15 PHP
php使用CURL模拟GET与POST向微信接口提交及获取数据的方法
Sep 23 PHP
PHP读取大文件的几种方法介绍
Oct 27 PHP
php 从指定数字中获取随机组合的简单方法(推荐)
Apr 05 PHP
Kindeditor编辑器添加图片上传水印功能(php代码)
Aug 03 PHP
PHP命令空间namespace及use的用法小结
Nov 27 PHP
PHP获取数组中指定的一列实例
Dec 27 PHP
php多进程中的阻塞与非阻塞操作实例分析
Mar 04 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 加密/解密函数 dencrypt(动态密文,带压缩功能,支持中文)
2009/01/30 PHP
用PHP来计算某个目录大小的方法
2014/04/01 PHP
Thinkphp多文件上传实现方法
2014/10/31 PHP
php随机显示指定文件夹下图片的方法
2015/07/13 PHP
关于laravel 日志写入失败问题汇总
2019/10/17 PHP
Jquery插件之打造自定义的select标签
2011/11/30 Javascript
Javascript的表单验证-初识正则表达式
2016/03/18 Javascript
利用jQuery实现打字机字幕效果实例代码
2016/09/02 Javascript
ES6新特性之Object的变化分析
2017/03/31 Javascript
深入浅析ES6 Class 中的 super 关键字
2017/10/20 Javascript
浅谈ES6 模板字符串的具体使用方法
2017/11/07 Javascript
jQuery实现的监听导航滚动置顶状态功能示例
2018/07/23 jQuery
VUE预渲染及遇到的坑
2018/09/03 Javascript
vue-cli 3.x 修改dist路径的方法
2018/09/19 Javascript
详解vue-cli 3.0 build包太大导致首屏过长的解决方案
2018/11/10 Javascript
图片文字识别(OCR)插件Ocrad.js教程
2018/11/26 Javascript
Vue封装Axios请求和拦截器的步骤
2020/09/16 Javascript
python实现简单的计时器功能函数
2015/03/14 Python
Django自定义认证方式用法示例
2017/06/23 Python
使用Python和xlwt向Excel文件中写入中文的实例
2018/04/21 Python
Python+AutoIt实现界面工具开发过程详解
2019/08/07 Python
python 定时器每天就执行一次的实现代码
2019/08/14 Python
python实现将列表中各个值快速赋值给多个变量
2020/04/02 Python
css3中的calc函数浅析
2018/07/10 HTML / CSS
Bootstrap File Input文件上传组件
2020/12/01 HTML / CSS
Bjorn Borg官方网上商店:国际运动时尚品牌
2016/08/27 全球购物
Nice Kicks网上商店:ShopNiceKicks.com
2018/12/25 全球购物
我的中国梦演讲稿高中篇
2014/08/19 职场文书
群众路线个人对照检查材料
2014/09/23 职场文书
中学综治宣传月活动总结
2015/05/07 职场文书
2015年环境监察工作总结
2015/07/23 职场文书
安全教育主题班会教案
2015/08/12 职场文书
新入职员工工作总结
2015/10/15 职场文书
决心书格式及范文
2019/06/24 职场文书
告诉你一个秘密:富人致富的五大优点
2019/07/11 职场文书
python 实现两个变量值进行交换的n种操作
2021/06/02 Python