首页> 基础笔记 >PHP基础学习 >面向对象 面向对象

PHP面向对象之构造方法与析构方法__construct( )和__destruct( )

作者:小萝卜 2019-08-31 浏览 1071

简介PHP面向对象之构造方法与析构方法, 构造函数的声明与其它操作的声明一样,只是其名称必须是两个下划线__construct( )。一个类的析构函数名称必须是两个下划线__destruct( )。

构造方法与析构方法

构造函数:

      大多数类都有一种称为构造函数的特殊方法。当创建一个对象时,它将自动调用构造函数,通常用它执行一些有用的初始化任务。

      构造函数的声明与其它操作的声明一样,只是其名称必须是两个下划线__construct( )。这是PHP5中的变化;PHP4的版本中,构造函数的名称必须与类名相同。为了向下兼容,如果一个类中没有名为__construct( )的方法,PHP将搜索一个与类名相同的方法。

 格式: [修饰符] function __construct ( [参数] ) { 

... ... 

   }

示例:
<?php
    /** 声明一个人类Person,其中声明一个构造方法 */
    class Person {                  
        //下面是声明人的成员属性,都是没有初值的,在创建对象时,使用构造方法赋初值
        public $name;                 //定义人的名字
        public $sex;                    //定义人的性别
        public $age;                    //定义人的年龄
        //声明构造方法,将来创建对象时,为对象的成员属性赋予初值,参数中都使用了默认参数
        public function __construct($name="", $sex="男", $age=1) {
            $this->name = $name;  //实例化时,会将参数$name为成员属性$this->name赋初值
            $this->sex = $sex;         //在创建对象时,会将参数$sex为成员属性$this->sex赋初值
            $this->age = $age;        //在创建对象时,会将参数$age为成员属性$this->age赋初值
        }
        public function say(){       //下面是声明人的成员方法
            echo "我的名字:".$this->name.",性别:".$this->sex.",年龄:".$this->age."。<br>";
        }       
    }
    //三次实例化person类的三个实例对象,并使用构造方法分别为新创建的对象成员属性赋予初值
    $person1 = new Person("张三", "男", 20); //创建$person1会自动执行构造方法,将参数传给它
    $person2 = new Person("李四", "女");     //创建$person2会自动执行构造方法,传入前两个参数
    $person3 = new Person("王五");   //创建对象$person3时会自动执行构造方法,只传入一个参数
    $person1->say();                        
    $person2->say();               

析构函数:

与构造函数相对的就是析构函数。析构函数是PHP5新添加的内容,在PHP4中没有析构函数。析构函数是在对象被销毁之前自动调用的方法,主要执行一些特定的操作,例如关闭文件,释放结果集等。

与构造函数的名称类似,一个类的析构函数名称必须是两个下划线 __destruct( )。析构函数不能带有任何参数。

示例:
<?php
    class Person {                      
        public $name;                  
        public $sex;                   
       
        public function __construct($name, $sex) {
            $this->name = $name;    
            $this->sex     = $sex;          
        }
        
        //声明的析构方法,在对象销毁前自动调用
        public function __destruct() {
            echo "再见".$this->name."<br>";
        }       
    }
    //下面三行通过new关键字实例化person类的三个实例对象
    $person1 = new Person("张三", "男");      //创建对象$person1 
    $person1 = null;                             //第一个对象将失去引用
    $person2 = new Person("李四", "女");     //创建对象$person2 
    $person3 = new Person("王五", "男");     //创建对象$person3 

 

很赞哦! (0)

文章评论

    高端网站建设