• 微信号
目录

php基础

您当前的位置:首页 > 我的笔记 > php基础>构造方法和析构方法

构造方法和析构方法

实例化一个类的对象后,如果要为这个对象的属性赋值,需要直接访问改对象的属性。如果想要在实例化对象的同时就为这个对象的属性进行赋值,则可以通过构造方法来实现。

构造方法是累的一个特殊成员,它会在类实例化对象是自动调用,用于对类中的成员进行初始化。与构造方法对应的是析构方法,它在对象销毁之前被调用,用于完成清理工作。

构造方法

在每个类中,都有一个构造方法,在创建对象时会被自动调用,如果在类中没有显式的声明它,PHP会自动生成一个没有参数,且没有任何操作的默认构造方法。在类中显式声明构造方法时默认构造方法将不存在。声明构造方法和声明成员方法类似,其语法格式如下

修饰符 function __construct(参数列表){
    //初始化操作
}

需要注意的是构造方法的名称必须为__constuct(),修饰符可以省略,默认为public

案例

<?php
    class person{
        public $name; //成员属性,存储姓名
        public $age;
        //声明一个构造方法,将来创建对象时,为对象成员属性赋予初始值
        function __construct($name,$age){ 
            $this->name=$name; //使用传入的参数$name为成员属性$this->name赋初值
            $this->age=$age;
        }
        function show(){
            echo $this->name.'='.$this->age;
        }
    };
    $p=new person("张三",18);
    $p->show();
?>

运行结果陵小宇博客-php构造方法

注意:

(1)构造方法没有返回值

(2)构造方法的作用是完成对新对象的初始化,并不是创建对象本身

(3)在创建对象后,系统会自动调用该类的构造方法,不需要手动调用

(4)一个类且只有一个构造方法,在php5后虽然__construct()和类名()可以共存,但只能使用一个

(5)构造方法和普通方法一样,可以访问类属性和方法,也有访问控制修饰符,还可以被其他方法调用

析构方法

析构方法在对象销毁之前会被自动调用,用于释放内存,其语法格式如下:

function __destruct(){
    //清理操作
}

需要注意的是,析构方法的命名必须为"__destruct()"且析构方法不带任何参数

案例

<?php
    class person{
        public function show(){
            echo "大家好,我是persom类的对象<br>";
        }
        //声明析构方法,在对象销毁前自动调用
        function __destruct(){
            echo "对象被销毁";
        }
    }
    $p=new person();
    $p->show();
?>

运行结果陵小宇博客-php析构方法