PHP 魔术方法 - 构造函数 __construct()
PHP 构造函数 ( __construct()
) 是对象被创建后自动调用的第一个方法。
任何类都有一个构造函数,即使我们没有显式的声明它,因为任何类都有一个默认的构造函数,这个默认的构造函数没有参数,也不会执行任何代码,可以说是一个空函数
一旦我们显式的声明了一个构造函数,那么默认的构造函数就会消失,也可以说是我们创建的构造函数把它屏蔽了
构造函数 __construct()
的作用
构造函数通常用于执行一些初始化任务,例如在创建对象时设置成员变量的初始值
声明构造函数
在类中声明一个构造函数的语法格式一般如下
<?php class ClassName { function __constrct([parameter list]){ // 函数主体,通常用于初始化对象的一些属性 } }
需要注意的是:一个 PHP 中只能有一个构造函数 __construct()
,因为 PHP 不允许函数重载
范例
下面的代码声明了一个类 Person
、同时为该类创建了一个构造函数 __construct()
。该构造函数接受三个参数: 名字、性别和年龄,同时设置相应的对象属性
<?php class Person { public $name; public $age; public $sex; /** * 显式声明一个构造函数,同时初始化对象的属性 */ public function __construct($name="", $sex="Male", $age=22) { $this->name = $name; $this->sex = $sex; $this->age = $age; } /** * say() 方法 */ public function say() { echo "Name:" . $this->name . ",Sex:" . $this->sex . ",Age:" . $this->age; } }
不传递参数来构造一个 Person 对象
因为 Person
构造函数 __construct()
的三个参数都设置了默认值,所以我们创建 Person
对象时也可以不传递参数
<?php $person1 = new Person(); echo $Person1->say();
输出结果如下
Name:,Sex:Male,Age:22
只传递名称参数来构造一个 Person
对象
<?php $person_yufei = new Person("Yufei"); echo $person_yufei->say();
输出结果如下
Name: Yufei, Sex: Male, Age: 22
同时传递参数名称、性别、年龄来构造一个 Person
对象
<?php $person_hero= new Person ("Hero", "Male", 25); echo $person_hero->say();
输出结果如下
Name: Hero, Sex: Male, Age: 25