对象的回收机制深度剖析

来源:互联网 发布:网络电视机介绍 编辑:程序博客网 时间:2024/05/22 06:52

分析:这是为什么呢?为什么析构函数只调用了一次呢。析构函数是在对象被销毁时调用的,可以用print_r()分别打印$a到$d,发现都可以将对象完全打印出来的。要知道这是为什么,那就要知道对象在内存中是怎么存在的了。

解释:1)从代码来看,类只被实例化一次。从之前的面向对象可以得知,对象是通过new className()创建的。

                 2)对象是通过引用传递的,即地址传递的(内存会给每个创建的对象分配一个地址)

                 3)从源代码的角度看。PHP在对象赋值的时候,是通过使用计数器+符号表连接来处理的,$a $b $c $d是符号表不同的变量名,他们都同时指向了同一个结构体

总结:基于以上分析:即上例中只创建了一个对象。而其他变量只是指向了那个对象,用通俗的的话来解释的话,可以这么理解:你的名字叫周星驰,别人称呼你为星爷或周       导,其实都是在说同一个人。

0 0