php析构方法关于栈的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php析构方法关于栈的问题相关的知识,希望对你有一定的参考价值。

 1 <?php
 2 class test{
 3     var $name;
 4     var $sex;
 5     var $age;
 6 
 7     function __construct( $name, $sex ,$age )
 8     {
 9         $this->name = $name;
10         $this->sex = $sex;
11         $this->age = $age;
12     }
13 
14     function __destruct()
15     {
16         echo "再见".$this->name.‘<br>‘;
17     }
18 }
19 
20 $person1 = new test(‘张三‘,‘男‘,2000);
21 $person1 =null;
22 $person2 =new test(‘lisi‘,‘32‘,3232);
23 $person3 =new test(‘wangwu‘,‘2323232‘,222);

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

再见张三
再见wangwu
再见lisi

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

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

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

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

当$person1 实例化类的时候 。会吧这个

 

以上是关于php析构方法关于栈的问题的主要内容,如果未能解决你的问题,请参考以下文章

关于php析构函数__destruct()的问题

使用Python定义构造函数和析构函数

关于PHP面向对象中—类的定义与对象的实例化操作以及构造析构函数的特殊用法

再见Restful,你好GraphQL

02.php面向对象——构造方法&析构方法

php面向对象的构造方法与析构方法