定义一个类:

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

你可能感兴趣的文章