定义一个类:
class Student { public $Name; public function __construct($Name) { $this->Name = $Name; } public function __destruct() { echo "销毁对象:".($this->Name)."<br/>"; } }
//先创建的对象后被销毁,在栈里先进后出。 $stu = new Student("张三"); $stu2 = new Student("李四"); $stu3 = new Student("王五");
输出:
销毁对象:王五
销毁对象:李四
销毁对象:张三
//当对象没有引用时,析构函数执行 $stu2 = new Student("张三2"); $stu2 = new Student("李四2");
输出:
销毁对象:张三2
销毁对象:李四2
//同理,析构函数执行 $stu3 = new Student("张三3"); $stu3 = null;
输出:
销毁对象:张三3
//stu4 = null时,其实stu5还在引用对象,所以析构函数还没执行 $stu4 = new Student("张三4"); $stu5 = $stu4; $stu4 = null
输出:
销毁对象:张三4