首页> 基础笔记 >PHP基础学习 >面向对象 面向对象
PHP面向对象之构造方法与析构方法__construct( )和__destruct( )
作者:小萝卜 2019-08-31 【 PHP 面向对象 】 浏览 1399
简介PHP面向对象之构造方法与析构方法, 构造函数的声明与其它操作的声明一样,只是其名称必须是两个下划线__construct( )。一个类的析构函数名称必须是两个下划线__destruct( )。
构造方法与析构方法
构造函数:
大多数类都有一种称为构造函数的特殊方法。当创建一个对象时,它将自动调用构造函数,通常用它执行一些有用的初始化任务。
构造函数的声明与其它操作的声明一样,只是其名称必须是两个下划线__construct( )。这是PHP5中的变化;PHP4的版本中,构造函数的名称必须与类名相同。为了向下兼容,如果一个类中没有名为__construct( )的方法,PHP将搜索一个与类名相同的方法。
格式: [修饰符] function __construct ( [参数] ) {
... ...
}
示例:
<?php
/** 声明一个人类Person,其中声明一个构造方法 */
class Person {
//下面是声明人的成员属性,都是没有初值的,在创建对象时,使用构造方法赋初值
public $name; //定义人的名字
public $sex; //定义人的性别
public $age; //定义人的年龄
//声明构造方法,将来创建对象时,为对象的成员属性赋予初值,参数中都使用了默认参数
public function __construct($name="", $sex="男", $age=1) {
$this->name = $name; //实例化时,会将参数$name为成员属性$this->name赋初值
$this->sex = $sex; //在创建对象时,会将参数$sex为成员属性$this->sex赋初值
$this->age = $age; //在创建对象时,会将参数$age为成员属性$this->age赋初值
}
public function say(){ //下面是声明人的成员方法
echo "我的名字:".$this->name.",性别:".$this->sex.",年龄:".$this->age."。<br>";
}
}
//三次实例化person类的三个实例对象,并使用构造方法分别为新创建的对象成员属性赋予初值
$person1 = new Person("张三", "男", 20); //创建$person1会自动执行构造方法,将参数传给它
$person2 = new Person("李四", "女"); //创建$person2会自动执行构造方法,传入前两个参数
$person3 = new Person("王五"); //创建对象$person3时会自动执行构造方法,只传入一个参数
$person1->say();
$person2->say();
析构函数:
与构造函数相对的就是析构函数。析构函数是PHP5新添加的内容,在PHP4中没有析构函数。析构函数是在对象被销毁之前自动调用的方法,主要执行一些特定的操作,例如关闭文件,释放结果集等。
与构造函数的名称类似,一个类的析构函数名称必须是两个下划线 __destruct( )。析构函数不能带有任何参数。
示例:
<?php
class Person {
public $name;
public $sex;
public function __construct($name, $sex) {
$this->name = $name;
$this->sex = $sex;
}
//声明的析构方法,在对象销毁前自动调用
public function __destruct() {
echo "再见".$this->name."<br>";
}
}
//下面三行通过new关键字实例化person类的三个实例对象
$person1 = new Person("张三", "男"); //创建对象$person1
$person1 = null; //第一个对象将失去引用
$person2 = new Person("李四", "女"); //创建对象$person2
$person3 = new Person("王五", "男"); //创建对象$person3
很赞哦! (0)
上一篇:PHP面向对象之封装性