php中这个构造函数/析构函数行为的原因是什么?

时间:2015-07-06 17:28:54

标签: php

我在PHP中运行一个简单的构造函数/析构函数

为什么输出以两行开头

创建了狗0 创造了狗1

什么时候应该

创建了狗0 摧毁了狗0

{{1}}

完整输出

{{1}}

1 个答案:

答案 0 :(得分:3)

从for循环的第一次迭代开始。在幕后,内存中有一个空间用于存放Dog()对象。

然后为新变量$dog分配指向内存中Dog()地址的指针/引用。我们看到了第一条创建的消息。

现在我们知道,只有当没有更多的引用时,第一个Dog()才会被销毁。

考虑到这一点,第二次循环,重复相同的过程。内存中的新空间被分配给新的Dog(),然后该内存的地址再次被赋予$dog。第二个创建消息。

现在原始的狗没有指向它的引用,所以它可以被销毁。首先破坏消息。

遵循相同的过程,您应该看到为什么其余的消息会像他们一样读出来。