首页 > 编程笔记 > PHP笔记 阅读:14

PHP构造方法和析构方法的使用(附带实例)

观察下面的程序,对实例 $xiaoming 的属性 $name 进行赋值,还需要通过使用接口 setname($name) 进行操作,如 $xiaoming->setname("XiaoMing")
<?php
// 定义类
class guests{
    private $name;
    private $gender;
    function setname($name) {
        $this->name = $name;
    }
    // 定义函数
    function getname() {
        return $this->name;
    }
    function setgender($gender) {
        $this->gender = $gender;
    }
    function getgender() {
        return $this->gender;
    }
};

$xiaoming = new guests;    // 生成实例
$xiaoming->setname("王小明");
$xiaoming->setgender("男");
$lili = new guests;
$lili->setname("李莉莉");
$lili->setgender("女");
echo $xiaoming->getname() . "\t" . $xiaoming->getgender() . "<br>";
echo $lili->getname() . "\t" . $lili->getgender();
?>
如果想在生成实例 $xiaoming 的同时就对此实例的属性 $name 进行赋值,该怎么办呢?这时就需要构造方法了。

PHP构造方法

构造方法存在于每个声明的类中,主要作用是执行一些初始化的任务。如果类中没有直接声明构造方法,那么类会默认生成一个没有参数且内存为空的构造方法。

在 PHP 中,声明构造方法的方法有两种,在 PHP 5 版本之前,构造方法的名称必须与类名相同,这种构造方法的风格在 PHP 8 中已经被弃用。

从 PHP 5 版本开始,构造方法的名称必须以两个下划线开头,即“__construct”。具体的语法格式如下:
function __construct([mixed args]){
    //方法的内容
}
一个类只能声明一个构造方法。构造方法中的参数是可选的,如果没有传入参数,就使用默认参数为成员变量进行初始化。

构造方法的特性是:当通过关键字 new 生成实例的时候,它就会被调用执行。它的用途就是经常对一些属性进行初始化,也就是给一些属性进行初始化的赋值。

下面通过实例介绍构造方法的使用方法和技巧:
<?php
class guests{              // 定义类 guests
    private $name;
    private $gender;
    function __construct($name, $gender) {  // 定义函数 function __construct
        $this->name = $name;
        $this->gender = $gender;
    }
    function getname() {    // 定义函数 getname
        return $this->name;
    }
    function getgender() {  // 定义函数 getgender
        return $this->gender;
    }
};

$xiaoming = new guests("赵大勇","男");
$lili = new guests("方芳芳","女");
echo $xiaoming->getname() . "\t" . $xiaoming->getgender() . "<br/>";
echo $lili->getname() . "\t" . $lili->getgender();
?>
运行结果为:

赵大勇 男
方芳芳 女

要记住的是,构造方法是不能返回(return)值的。

PHP析构方法

有构造方法,就有它的反面“析构方法”(destructor)。它是在对象被销毁的时候被调用执行的。但是因为 PHP 在每个请求的最终都会把所有资源释放,所以析构方法的意义是有限的。

具体使用析构方法的语法格式如下:
function__destruct(){
    //方法的内容,通常完成一些在对象销毁前的清理任务
}
PHP 具有垃圾回收机制,可以自动清除不再使用的对象,从而释放更多的内存。析构方法是在垃圾回收程序执行前被调用的方法,是 PHP 编程中的可选方法。

析构方法在执行某些特定行为时还是有用的,比如在对象被销毁时清空资源或者记录日志信息。

在以下两种情况下,析构方法可能被调用执行:

相关文章