PHP析构函数与回收机制

不言
不言 原创
2023-03-24 20:28:01 685浏览

这篇文章介绍的内容是关于PHP析构函数与回收机制 ,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下

// ===笔记部分1===

/*
疑问
1、把对象赋值为其他,比如true 会不会销毁对象?
答:可以

2、110.php中代码部分4
为什么销毁一个,空2个
最后一个会出现在hr线下面?

答:最后一个销毁,是因为php页面执行完毕了,
最后系统回收,$d此时才销毁,
因此 显示在hr线后面
*/



// ===代码部分1===

class Human2 {

    public $name = null;    public $gender = null;    public function __construct() {
        echo '出生了<br >';
    }    public function __destruct() {
        echo '再见<br >';
    }
}$a = new Human2();$b = new Human2();$c = new Human2();$d = new Human2();unset($a);//$b = false;$b = true;//改成true也可以销毁$c = null;echo '<hr >';



// 对象的回收机制

// ===代码部分2===

class Human {

    public $name = null;    public $gender = null;    public function __destruct() {
        echo '再见!<br >';
    }
}$a = new Human();$b = $c = $d = $a;unset($a);echo '<hr >';

/*
那么问题来了:
1、死了几次?
2、死在hr线上,还是死在hr线下?

答:死了一次,在灰线以下。
如图11101所示,开启human房子的其中一把a钥匙没了,
还有b,c,d三把钥匙。

直到最终所有代码执行完,启动回收机制,
最终再见。
*/
这里写图片描述
这里写图片描述



// ===代码部分3===

class Human {

    public $name = '张三';    public $gender = null;    public function __destruct() {
        echo '再见!<br >';
    }
}$a = new Human();$b = $c = $d = $a;echo $a->name,'<br >'; 
//张三echo $b->name,'<br >'; //张三$b->name ='李四';echo $a->name,'<br >'; //李四echo $b->name,'<br >'; //李四unset($a);echo '<hr >';// hr线// 再见!



// ===代码部分4===

class Human {

    public $name = '张三';    public $gender = null;    public function __destruct() {
        echo '再见!<br >';
    }
}$e = $f = $g = new Human();unset($e);echo 'unset e<br >';unset($f);echo 'unset f<br >';unset($g);
// 本行unset触发对象消亡,然后执行下一行echo gecho 'unset g<br >';

/*
在此处,页面运行完毕,对象销毁,执行析构函数
销毁了几个对象?

答:
只有一个对象,只死1次
死在系统回收时,即页面执行完毕,因此在hr线下.
*/

// ===笔记部分1===

/*
疑问
1、把对象赋值为其他,比如true 会不会销毁对象?
答:可以

2、110.php中代码部分4
为什么销毁一个,空2个
最后一个会出现在hr线下面?

答:最后一个销毁,是因为php页面执行完毕了,
最后系统回收,$d此时才销毁,
因此 显示在hr线后面
*/


相关推荐:

PHP构造函数详解

以上就是PHP析构函数与回收机制 的详细内容,更多请关注php中文网其它相关文章!

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
上一条: PHP构造函数详解 下一条:PHP this绑定