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 智能404跳转代码,适合换域名没改变目录的网站
Jun 04 PHP
使用php计算排列组合的方法
Nov 13 PHP
php使用PDO操作MySQL数据库实例
Dec 30 PHP
php实现SAE上使用storage上传与下载文件的方法
Jun 29 PHP
smarty内部日期函数html_select_date()用法实例分析
Jul 08 PHP
关于php微信订阅号开发之token验证后自动发送消息给订阅号但是没有消息返回的问题
Dec 21 PHP
php微信公众平台配置接口开发程序
Sep 22 PHP
yii2简单使用less代替css示例
Mar 10 PHP
PHP堆栈调试操作简单示例
Jun 15 PHP
laravel框架创建授权策略实例分析
Nov 22 PHP
php redis setnx分布式锁简单原理解析
Oct 23 PHP
PHP对接阿里云虚拟号的实现(号码隐私保护)
Apr 06 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中判断文件空目录是否有读写权限的函数代码
2012/08/07 PHP
探讨多键值cookie(php中cookie存取数组)的详解
2013/06/06 PHP
基于xcache的配置与使用详解
2013/06/18 PHP
浅析PHP原理之变量分离/引用(Variables Separation)
2013/08/09 PHP
PHP时间戳格式全部汇总 (获取时间、时间戳)
2016/06/13 PHP
PHP使用PDO实现mysql防注入功能详解
2019/12/20 PHP
PHP实现创建一个RPC服务操作示例
2020/02/23 PHP
DOM操作一些常用的属性汇总
2015/03/13 Javascript
vue.js父组件使用外部对象的方法示例
2017/04/25 Javascript
微信小程序实现页面浮动导航
2020/01/08 Javascript
Bootstrap table 服务器端分页功能实现方法示例
2020/06/01 Javascript
浅谈vue项目,访问路径#号的问题
2020/08/14 Javascript
在Python中操作字典之clear()方法的使用
2015/05/21 Python
pandas.DataFrame 根据条件新建列并赋值的方法
2018/04/08 Python
如何使用Python的Requests包实现模拟登陆
2018/04/27 Python
pygame游戏之旅 游戏中添加显示文字
2018/11/20 Python
python 用for循环实现1~n求和的实例
2019/02/01 Python
对Python3中dict.keys()转换成list类型的方法详解
2019/02/03 Python
Python: 传递列表副本方式
2019/12/19 Python
Django 解决阿里云部署同步数据库报错的问题
2020/05/14 Python
Python使用xpath实现图片爬取
2020/09/16 Python
python爬虫构建代理ip池抓取数据库的示例代码
2020/09/22 Python
美国皮靴公司自1863年:The Frye Company
2016/11/30 全球购物
新加坡最佳婴儿用品店:Mamahood.com.sg
2018/08/26 全球购物
豪华床上用品 :Jennifer Adams
2019/09/15 全球购物
给老婆的保证书范文
2014/04/28 职场文书
学校校庆演讲稿
2014/05/22 职场文书
微笑服务标语
2014/06/24 职场文书
教师个人读书活动总结
2014/07/08 职场文书
学生党员检讨书范文
2014/12/27 职场文书
初中中等生评语
2014/12/29 职场文书
社区文明创建工作总结2015
2015/04/21 职场文书
小学同学聚会感言
2015/07/30 职场文书
Ajax异步刷新功能及简单案例
2021/11/20 Javascript
使用PostGIS完成两点间的河流轨迹及流经长度的计算(推荐)
2022/01/18 PostgreSQL
V Rising 服务器搭建图文教程
2022/06/16 Servers