PHP构造函数和析构函数的用法(新手必看)
PHP 程序创建类的实例(对象)时,需要调用构造函数进行对象的初始化工作,如果没有定义构造函数,则使用默认的无参数构造函数。
下面的代码在 /index.php 文件中测试这个构造函数的使用:
本例中,$auto1 对象创建时并没有指定参数,doors 属性使用默认值 4;$auto2 对象创建时指定参数为 2,doors 属性的值设置为 2。
PHP 的类中,只能定义一个构造函数,一方面,如果需要创建多个版本的对象,可以组织好 __construct() 方法的参数,并设置合理的默认值;另一方面,可以使用静态方法创建不同版本的对象,在软件开发中,这类静态方法称为“工厂方法”。
与构造函数相对应的是析构函数,可以完成对象释放时的清理工作。
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(); ?>代码执行结果为:
车辆报废了...
可以看到,代码中并没有显式调用析构函数,但它的确执行了。
ICP备案:
公安联网备案: