• 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 实例化类的时候 。会吧这个

  • 相关阅读:
    关于Request.Form和动态添加服务器控件
    httpCookies
    简单的重写重置SessionID
    C# 内置类型表
    加密Web.Config(小技巧)
    C#委托实现系统回调
    C#中将字符串转成 Base64 编码(小技巧)
    关于跨域的SessionID的问题
    *.ashx文件
    Session中丢失的问题解决
  • 原文地址:https://www.cnblogs.com/yhl664123701/p/5209478.html
Copyright © 2020-2023  润新知