zoukankan      html  css  js  c++  java
  • PHP类(二)-类的构造方法和析构方法

    构造方法

    构造方法是对象创建完成后第一个被对象自动调用的方法,用来完成对象的初始化

    在每个类中都会有一个构造方法,如果没有声明的话,类中会存在一个没有参数列表并且内容为空的构造方法。如果声明的话,默认的构造方法将被替代。

    在PHP5以前的版本中,构造方法的名称要与类名相同,这种方法在PHP5中也能用。

    <?php
    	class Person{
    		var $name;
    		var $age;
    		var $sex;
    		
    		function __construct($name="",$age=23,$sex="Male"){ //给成员属性赋初值
    			$this->name = $name; //创建对象的时候,使用传入的$name参数为$this->name赋初值
    			$this->age = $age; //创建对象的时候,使用传入的$age参数为$this->age赋初值
    			$this->sex = $sex; //创建对象的时候,使用传入的$sex参数为$this->sex赋初值
    		}
    		
    		function Say(){
    			echo "My name is ".$this->name.",and my age is ".$this->age.",sex is ".$this->sex;
    			echo "<br>";
    		}
    	}
    	
    	$p1 = new Person("Tom");
    	$p2 = new Person("John",21); //有参数传入的时候会覆盖掉成员属性的初值
    	$p3 = new Person("Alex",25,"Female");
    	
    	$p1->say();
    	$p2->say();
    	$p3->say();
    ?>
    

     运行结果

    析构方法

    析构方法是对象在销毁之前最后一个被对象自动调用的方法,用于对象被销毁的时候。

    <?php
    	class Person{
    		var $name;
    		
    		function __construct($name="",$age=23,$sex="Male"){
    			$this->name = $name;
    		}
    		
    		function __destruct(){
    			echo $this->name." be killed.";
    			echo "<br>";
    		}
    	}
    	
    	$p1 = new Person("Tom");
    	$p1 = null; //赋予空值,让其失去引用
    	$p2 = new Person("John");
    	$p3 = new Person("Alex");
    	
    ?>
    

    运行结果

    可以看到语句输出的顺序不一样,第三个比第二个还早输出

    第一个对象在声明完了之后被赋予了空值,最先失去引用,然后自动调用了析构函数

    因为对象的引用都是放在栈内存中,由于栈的后进先出的特点,后创建的对象引用会被先释放,所以先调用第三个对象的析构方法,再调用第二个对象的析构方法

  • 相关阅读:
    [NOI2008] [bzoj1061] 志愿者招募
    [bzoj1070] 修车
    [群内模拟4.8] 定点爆破 后宫着♂火 签到题
    初识费用流 模板(spfa+slf优化) 餐巾计划问题
    Chromium的无锁线程模型C++代码示例
    JavaScript的Date类的函数特殊处理导致的问题
    ssh免密码快速登录配置
    container-with-most-water(最大蓄水问题)
    死锁
    美团2018春招编程题第一题 字符串距离 O(n)解法
  • 原文地址:https://www.cnblogs.com/sch01ar/p/8145390.html
Copyright © 2011-2022 走看看