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

时间: 2024-10-12 23:22:30

php析构方法关于栈的问题的相关文章

php构造方法与析构方法

1. 构造方法 <?php //构造方法 __construct() 是在实例化对象时被自动调用 //用途:可以用于初始化程序(可以给成员属性赋值,也可以调用成员方法) //语法:[修饰符] function __construct(参数列表...){ } // 构造方法方法格式: // [修饰符] function __construct([参数]){ // 程序体 // } class person{ public $name; public $age; public $sex; publi

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

构造方法与析构方法是对象中的两个特殊方法,它们都与对象的生命周期有关.构造方法时对象创建完成后第一个被对象自动调用的方法,这是我们在对象中使用构造方法的原因.而析构方法时对象在销毁之前最后一个被对象自动调用的方法,这也是我们在对象中使用析构方法的原因.所以通常使用构造方法完成一些对象的初始化工作,使用析构方法完成一些对象在销毁前的清理工作.构造方法:①一个类只能有一个构造方法!②构造方法没有返回值.③构造方法的作用是对新对象的初始化,但并不能创造对象本来.在创建构造方法后,系统将自动调用构造方法

C#资源释放及Dispose、Close和析构方法

备注:此文的部分观点有误,之所以仍旧保留本文,是需要在后期给出一个勘误版.正确的版本在这里“C#中标准Dispose模式的实现” 一:什么是资源 在开始本文前,需要一些准备知识.首先要提出“什么是资源”.在CLR出来之后,Windows系统资源开始分为“非托管资源”和“托管资源”. 非托管资源是指:所有的Window内核对象(句柄)都是非托管资源,如对于Stream,数据库连接,GDI+的相关对象,还有Com对象等等,这些资源并不是受到CLR管理: 托管资源是指:由CLR管理分配和释放的资源,即

构造方法与析构方法区别

Java构造方法 类有一个特殊的成员方法叫作构造方法,它的作用是创建对象并初始化成员变量.在创建对象时,会自动调用类的构造方法.构造方法定义规则:Java 中的构造方法必须与该类具有相同的名字,并且没有方法的返回类型(包括没有void).另外,构造方法一般都应用 public 类型来说明,这样才能在程序任意的位置创建类的实例也就是对象.示例:下面是一个 Rectangle 类的构造方法,一个是带有两个参数,分别表示矩形的长和宽: 另一个是不带参数:public class Rectangle {

知识点:构造和析构方法 __new__ , __init__ , __del__

1:__new__ 类创建对象的一个执行的方法,一般不需要重写这个函数.当继承的类是不可变,但是又想修改该对象. 基本语法  def __new__(cls ,[args,]]) ####写一个将字母全部大写的类#### class Capstr(str): def __new__(cls , string): string = string.upper() return str.__new__(cls , string) print(Capstr("marian")) ####写一个

PHP之析构方法学习笔记

__destruct() 当对象被销毁时候,系统内部会自动调用该方法. 分三类:   1.当php代码 声明周期执行完毕结束后: 会自动调用该方法 2.当对象被unset()后 :系统会自动调用该方法 3.当对象被重新赋值后 :系统会自动调用该方法 1 class Test{ 2 3 public function __destruct(){ 4 5 echo "对象被销毁之后,执行的代码"; 6 } 7 } 8 9 $test = new Test(); 10 11 unset($t

类的构造方法和析构方法和封装的目的和封装的做法+访问修饰符

一.封装的目的:为了让类更安全. 封装的做法: ①类里面的成员变量做为private ②使用成员方法来间接访问成员变量 ③在该方法里面加限制条件 注意:PHP类里面不允许出现同名方法. 二.访问修饰符 ①public:代表公有的,在任何地方都可以访问. ②protected:代表受保护的,只能在该类或该类的子类中访问. ③private:代表私有的,只能在该类中访问. 三.类的构造方法注意事项 ①构造方法名可以和类相同,也可以使用__construct();提倡时候后者. ②构造方法没有返回值.

PHP抽象接口析构方法

/*class Ren{ public static $color; static function Show() { Ren::$color;//用类名不仅可以调用自己的,还可以调用其他类的Car::$name self::$color;//用self只能调用该类 }}class Car{ public static $name;}*///抽象类 关键词abstract/*abstract class DongWu{ public $dong; public $jiao; function C

0607am抽象类&amp;接口&amp;析构方法&amp;tostring&amp;小知识点

/*class ren{ public static $color;//静态 static function () { ren::$color; self::$color;//self只能写在类里面,代表这分类 }} */ //不能实例化的类:抽象类abstract class Animal //关键字abstract{ public $dong; public $jiao; function chi() { } function shui() { }}class Ren extends Ani