析构函数 __destruct
- 首先我们在之前的那一章节中说过,在PHP中魔术方法前面都有两个下横杠
- 为了更加了解这个方法具体使用的用途,我们可以先看下一下destruct这个英文单词的含义
- 谷歌翻译的意思:毁坏(摧毁之意)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190503182808191.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM5MzM4MDA2,size_16,color_FFFFFF,t_70)
- 看完这个单词的意思,其实大家应该就能明白这个魔术方法的特性了,就是摧毁 什么什么,可以是对象。
- 官方PHP手册的定义是这样子的:析构函数会在到某个对象的所有引用都被删除或者当对象被显式销毁时执行。
<?php
/**
* Created by PhpStorm.
* User: Administrator
* Date: 2019/5/3
* Time: 18:49
*/
class MyDestructableClass {
/**
* 下面的是魔术方法中的构造函数,这个方法我们上次已经讲过了
* 这个方法会在实例化类的时候最先执行。
*/
function __construct() {
print "In constructor\n";
$this->name = "MyDestructableClass";
}
/**
* 下面是魔术方法中的析构函数,注意这个里手册中说的很模糊,
* 其实就是指当某个对象或者变量被销毁时自动执行方法体中的内容
*
*/
function __destruct() {
print "Destroying " . $this->name . "\n";
}
}
$obj = new MyDestructableClass();
/**
* 输出内容如下
*/
//In constructor 这里是构造函数中自动执行的
//Destroying MyDestructableClass 这里是析构函数里面自动执行的。
- 我想大家肯定很疑惑为什么执行析构函数中的语句啦
- 其实销毁对象或者变量这个东西PHP是这样子定义显示销毁和隐式销毁的。
- 显试销毁: 当对象没有被引用时就会被销毁,所以我们可以unset或为其赋值 NULL。
- 隐试销毁:PHP是脚本语言,在代码执行完最后一行时,所有申请的内存都要释放掉。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190503191943182.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM5MzM4MDA2,size_16,color_FFFFFF,t_70)
好的今天的章节就先到这里了,接下来是送大家的一句话,出自梁实秋的散文《抽烟》中的一句:马克·吐温说过:“戒烟是很容易的事,我一年戒过好几十次了。”