php魔术方法之析构函数 __destruct

一、语法

__destruct ( ) : void

  PHP 5 引入了析构函数的概念,这类似于其它面向对象的语言,如 C++。析构函数会在到某个对象的所有引用都被删除或者当对象被显式销毁时执行。

  和构造函数一样,父类的析构函数不会被引擎暗中调用。要执行父类的析构函数,必须在子类的析构函数体中显式调用 parent::__destruct()。此外也和构造函数一样,子类如果自己没有定义析构函数则会继承父类的。

  析构函数即使在使用 exit() 终止脚本运行时也会被调用。在析构函数中调用 exit() 将会中止其余关闭操作的运行。

 

二、示例

<?php

/**
 * 定义一个猫类
 */
class Cat {

	//定义一个属性
	private $name = null;

	// 构造函数
	function __construct(?string $name){
		print "__construct <br>\n";
		if(is_null($this->name)){
			$this->name = $name;
		}

		//就算执行下面方法 ,析构函数照样执行
		// exit();
		// die();
	}

	/**
	 * 输出名字
	 */
	public function getName(){
		echo "这是一只猫,名字叫{$this->name}。\n";
	}

	//析构函数  脚本结束时执行
	function __destruct() {
        print "__destruct 类名: ". __CLASS__;
    }

}


//实例化
$Cat = new Cat('旺财');  // 输出  __construct   

$Cat->getName(); //输出:这是一只猫,名字叫旺财。

// 脚本结束时 输出 : __destruct 类名:Cat

  

三、其他

了解更多内容,请前往:https://www.php.net/manual/zh/language.oop5.decon.php#object.destruct

posted on 2021-04-09 10:48  narwhalYel  阅读(439)  评论(0)    收藏  举报