PHP5 的对象赋值机制介绍

 更新时间:2011年08月02日 22:10:42   作者:  
看到PHP设计模式中值对象模式中的例题,对于结果总感到有点疑惑。回头看了下PHP5的对象赋值才真正清楚。
复制代码 代码如下:

<?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浮点数精确运算

    如果用php的+-*/计算浮点数的时候,可能会遇到一些计算结果错误的问题,所以基本上大部分语言都提供了精准计算的类库或函数库,比如php有BC高精确度函数库,下面我们介绍一下一些常用的BC高精确度函数使用。
    2016-03-03
  • PHP常用的三种设计模式

    PHP常用的三种设计模式

    本文为大家介绍常用的三种php设计模式:单例模式、工厂模式、观察者模式,具有很好的参考价值,下面跟着小编一起来看下吧
    2017-02-02
  • PHP将DateTime对象转化为友好时间显示的实现代码

    PHP将DateTime对象转化为友好时间显示的实现代码

    PHP将DateTime对象转化为友好时间显示的实现代码,需要的朋友可以参考下。
    2011-09-09
  • PHP实现对站点内容外部链接的过滤方法

    PHP实现对站点内容外部链接的过滤方法

    这篇文章主要介绍了PHP实现对站点内容外部链接的过滤方法,可实现针对外部链接增加rel="nofollow"的功能,有助于网站SEO建设以及避免不必要的损失,是非常实用的技巧,需要的朋友可以参考下
    2014-09-09
  • PHP实现获取图片颜色值的方法

    PHP实现获取图片颜色值的方法

    这篇文章主要介绍了PHP实现获取图片颜色值的方法,需要的朋友可以参考下
    2014-07-07
  • php生成酷炫的四个字符验证码

    php生成酷炫的四个字符验证码

    可以生成随机颜色、干扰线条元素、干扰点元素的php验证码,这篇文章主要介绍了php生成酷炫的四个字符验证码的编写方法,感兴趣的小伙伴们可以参考一下
    2016-04-04
  • php操作JSON格式数据的实现代码

    php操作JSON格式数据的实现代码

    php操作JSON格式数据的实现代码,需要的朋友可以参考下。
    2011-12-12
  • php回调函数处理数组操作示例

    php回调函数处理数组操作示例

    这篇文章主要介绍了php回调函数处理数组操作,结合实例形式详细分析了PHP回调函数遍历与过滤数组相关操作技巧与注意事项,需要的朋友可以参考下
    2020-04-04
  • php中sort函数排序知识点总结

    php中sort函数排序知识点总结

    在本篇文章里小编给大家分享的是一篇关于php中sort函数排序知识点总结内容,有兴趣的朋友们可以参考下。
    2021-01-01
  • php图片上传类 附调用方法

    php图片上传类 附调用方法

    这篇文章主要为大家分享了一个php上传图片的类,文中附调用方法,感兴趣的小伙伴们可以参考一下
    2016-05-05

最新评论