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

PHP构造函数和析构函数的用法(新手必看)

PHP 程序创建类的实例(对象)时,需要调用构造函数进行对象的初始化工作,如果没有定义构造函数,则使用默认的无参数构造函数。

PHP构造函数

实际开发中,可以根据需要定义自己的构造函数。下面的代码在 tAuto 类中添加了一个构造函数(/demo/tAuto.php)。
<?php
class tAuto
{
    // 构造函数
    public function __construct($doors=4)
    {
        $this->setDoors($doors);
    }
    //
    public $model;
    private $doors;
    //
    public function setDoors($doors)
    {
        if($doors>=0 && $doors<=5)
            $this->doors = $doors;
        else
            $this->doors = 4;
    }
    public function getDoors()
    {
        return $this->doors;
    }
    //
    public function drive()
    {
        echo $this->model," 行驶中 ...";
    }
}
?>
在 PHP 的类中,使用 __construct() 函数定义类的构造函数。本例的构造函数定义了一个参数,用于指定车门数量,并指定默认为 4。

下面的代码在 /index.php 文件中测试这个构造函数的使用:
<?php
require_once $_SERVER["DOCUMENT_ROOT"]."/demo/tAuto.php";

$auto1 = new tAuto();
echo $auto1->getDoors(),"<br>";
$auto2 = new tAuto(2);
echo $auto2->getDoors();
?>
代码执行后会显示 4 和 2。

本例中,$auto1 对象创建时并没有指定参数,doors 属性使用默认值 4;$auto2 对象创建时指定参数为 2,doors 属性的值设置为 2。

PHP 的类中,只能定义一个构造函数,一方面,如果需要创建多个版本的对象,可以组织好 __construct() 方法的参数,并设置合理的默认值;另一方面,可以使用静态方法创建不同版本的对象,在软件开发中,这类静态方法称为“工厂方法”。

与构造函数相对应的是析构函数,可以完成对象释放时的清理工作。

PHP析构函数

在 PHP 的类中,使用 __destruct() 函数定义析构函数,对象释放时会自动调用,如下面的代码(/demo/tAuto.php)。
<?php
class tAuto
{
    // 构造函数
    public function __construct($doors=4)
    {
        $this->doors = $doors;
    }
    // 析构函数
    public function __destruct()
    {
        echo "车辆报废了...";
    }
    //
    // 其他代码...
}
?>
下面的代码在 /index.php 文件中进行测试:
<?php
require_once $_SERVER["DOCUMENT_ROOT"]."/demo/tAuto.php";

$auto = new tAuto();
?>
代码执行结果为:

车辆报废了...

可以看到,代码中并没有显式调用析构函数,但它的确执行了。

相关文章