您的位置:首页 > 编程语言 > PHP开发

php析构方法关于栈的问题

2016-02-23 12:32 477 查看
<?php
class test{
var $name;
var $sex;
var $age;

function __construct( $name, $sex ,$age )
{
$this->name = $name;
$this->sex = $sex;
$this->age = $age;
}

function __destruct()
{
echo "再见".$this->name.'<br>';
}
}

$person1 = new test('张三','男',2000);
$person1 =null;
$person2 =new test('lisi','32',3232);
$person3 =new test('wangwu','2323232',222);


这是在网页中显示出来的结果

再见张三
再见wangwu
再见lisi

对象都是在页面执行结束后失去引用。

上面的类中 有析构方法 __destruct 当程序运行到这的时候 会输出信息。对象的引用一旦失去作用 ,垃圾回收机制就会自动启用并回收对象所占用的内存,再回收垃圾对象占用的内存之前会自动调用析构方法。输出信息。

这个类所产生的结果都是调用析构方法所产生的信息。 当$person1 被赋值后又被赋值为空。所以呢第一个对象被释放 执行析构方法 输出“张三”

当$person2 and $person3 是在页面执行完毕后失去引用从而调用析构方法。但是对象的引用都是存放在栈内存中 ,这里就的了解栈的知识。(先进后出的原理)所以是 lisi 先进 wangwu后进 导致了 出的时候是wangwu先出 lisi再出。才会出现上述结果

当$person1 实例化类的时候 。会吧这个
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: