问答详情
源自:3-5 析构函数-PHP面向对象编程

析构函数是否被调用了两次呢?

那请问老师:析构函数是否被调用了两次呢?

$james=null;这个调用了一次析构函数

打印: From now on James will not be used.

然后程序结束以后又调用一次析构函数。

打印: Destroying James Destroying Jordan

看这个打印的顺序,好像是“后进先出“的顺序。

James在后,先清空。

Jordan在先,后清空。

然而这一句:From now on James will not be used.插在二个destroy之间。

是一起把james清空完了,接着清jordan。

=。=个人猜测,请老师解答我的疑问。

提问者:全民工作狂 2015-09-17 12:35

个回答

  • 慕设计1393982
    2015-12-18 15:17:31
    已采纳

    一个对象被析构之后就不存在了,所以不可能再调用一次它的析构函数。

    $james=null;之后,之前被james这个变量引用的那个对象没人在使用了,所以就被释放,也就是调用一次析构。jordon的对象还被jordon这个变量引用,所以它在最后程序退出时才被释放,所以在From now on James will not be used.这条语句之后调用析构函数,没有所谓的“后进先出”。