PHP构造函数和析构函数的用法(附带实例)
在 PHP 中,构造函数是一种特殊的方法,用于在创建对象时进行初始化操作,例如为对象的属性进行赋值、设定默认值等。构造函数在创建对象时自动调用,无须手动调用。
每个类都有一个构造函数,如果没有显式定义构造函数,PHP 会自动生成一个没有参数且没有任何操作的默认构造函数;如果显式定义构造函数,默认构造函数将不存在。
定义构造函数的语法格式如下:
为了使读者更好地理解构造函数,下面演示构造函数的使用方法,具体代码如下:
从上述示例代码的输出结果可以看出,不传递参数时,属性 $name 的值为默认值 user;传递参数时,属性 $name 的值为 Tom。
定义析构函数的语法格式如下:
下面演示析构函数的使用,示例代码如下:
每个类都有一个构造函数,如果没有显式定义构造函数,PHP 会自动生成一个没有参数且没有任何操作的默认构造函数;如果显式定义构造函数,默认构造函数将不存在。
定义构造函数的语法格式如下:
访问控制修饰符 function __construct([参数1, 参数2, …]) { 方法体 }在上述语法格式中,构造函数的默认访问控制修饰符是 public,构造函数中的参数是完成对象初始化所需的数据。在创建对象时,可以根据不同的需求传入不同的参数,构造函数的方法体用于完成初始化操作。
为了使读者更好地理解构造函数,下面演示构造函数的使用方法,具体代码如下:
class User { public $name; public function __construct($name = 'user') { $this->name = $name; } } $obj1 = new User(); $obj2 = new User('Tom'); echo $obj1->name; // 输出结果:user echo $obj2->name; // 输出结果:Tom在上述代码中:
- 第 4~7 行代码定义构造函数,构造函数的参数 $name 的默认值是 user;
- 第 6 行代码初始化成员属性 $name;
- 第 9 行代码实例化 User 类时不传递参数;
- 第 10 行代码实例化 User 类时传递参数 Tom。
从上述示例代码的输出结果可以看出,不传递参数时,属性 $name 的值为默认值 user;传递参数时,属性 $name 的值为 Tom。
PHP中的析构函数
析构函数在对象被销毁之前自动调用,执行一些指定功能或操作。例如,关闭文件、释放结果集等。在使用 unset() 释放对象或者 PHP 脚本运行结束自动释放对象时,析构函数会自动调用。定义析构函数的语法格式如下:
访问控制修饰符 function __destruct([参数1, 参数2, …]) { 方法体 }上述语法格式中,方法体用于完成对象的销毁。
下面演示析构函数的使用,示例代码如下:
class User { public function __destruct() { echo '执行了析构函数'; } } $obj = new User(); unset($obj); // 输出结果:执行了析构函数在上述代码中,第 9 行代码使用 unset() 释放对象,此时就会自动执行析构函数。由于 PHP 脚本运行结束时也会自动释放对象,所以即使省略第 9 行代码,也会输出“执行了析构函数”。