有两种情况会调用析构函数:在执行你的脚本的时候,当一个对象的所有的引用都被注销,或者当脚本运行完毕而PHP结束请求。第二种方式比较巧妙,因为第一种方法中你依赖的一些对象可能已经调用析构函数了,所以他们已经无法访问了。所以,第一种方法要慎用,而且不要在你的析构函数中应用其他对象。
<?php
/**
* Created by PhpStorm.
* User: ZhouTengFu
* Date: 2018/2/13
* Time: 上午12:10
*/
class MyClass
{
function __destruct()
{
print "我是MyClass对象的析构函数\n";
// TODO: Implement __destruct() method.
}
}
$obj = new MyClass();
$obj = NUll;
![](https://img.haomeiwen.com/i7771443/1de7ce4093467c47.png)
在这个例子中就算没有最后一行代码,当请求结束,执行引擎关闭的时候析构函数也会被调用的。
注意:PHP并不保证析构函数被调用的准确时间点,所以它可能在最后一个引用的对象被释放后几行语句时才执行调用。因此,你需要注意这个问题一面哎编写你的应用的时候发生意外。
网友评论