PHP 5 引入了析构函数的概念,这类似于其它面向对象的语言,如 C++。析构函数会在到某个对象的所有引用都被删除或者当对象被显式销毁时执行。
class Person{public $name;public $age;public function __construct($name,$age){$this->name=$name;$this->age=$age;//这里用于初始化操作 ,比如打开数据库之类的等等数据化初始操作}public function __destruct(){echo $this->name."执行销毁
";//这里是一个页面的结束,用于关闭或者销毁一些已经用不到的资源比如已经打开的数据库链接,可以在这里关闭}}$p1 = new Person("1贾宝玉",16);$p4 = $p1;$p1=null;$p5 = new Person("2",2);$p2 = new Person("3林黛玉",14);$p3 = new Person("4测试",10);//如上代码销毁顺序是 4 3 2 1 销毁 如 1贾宝玉 在初始化完成之后赋值给了$p4 然后将$p1 置为null 这个只是把$p1的指向关系取消了,但是因为赋值给了$p4 所以最终效果是不影响的。 //析构方法的销毁按照先进后出的顺序销毁执行//析构方法和构造方法一样系统默认的会自动调用
?>
?>
运行代码可以看到效果:
1. 析构方法会自动调用
2. 析构方法主要用于销毁资源
3. 析构方法调用顺序是,先一次创建对象然后放入栈内,秉承着先进后出的原则,最后进入的最先销毁
4. 析构函数什么时候被调用
- 1、当程序退出时候
- 2、当一个对象所有引用指向都没有了,(可称为垃圾对象)那么该对象的析构方法/函数也会被立即调用(这点跟java不一样java是在某个时候执行回收)
- 3、显示调用即手动调用类的析构函数执行销毁