构造函数是PHP中用于对象初始化的特殊方法,使用__construct定义,创建对象时自动执行,可传递参数进行属性赋值、依赖注入或资源加载,如数据库连接;子类需手动调用parent::__construct继承父类初始化逻辑。

在PHP中,构造函数是一个特殊的方法,用于在创建对象时自动执行初始化操作。正确使用构造函数可以让对象在实例化时就具备必要的属性或完成特定的准备工作。
什么是构造函数
构造函数是在类中定义的一个特殊方法,当通过new关键字创建对象时,它会自动被调用。PHP中构造函数的名称是__construct(注意是两个下划线)。
它不需要手动调用,系统会在对象创建时自动触发,适合用来设置默认值、连接数据库、检查配置等初始化工作。
如何定义_construct构造方法
在类中使用__construct作为方法名来定义构造函数。它可以接受参数,也可以不带参数。
立即学习“PHP免费学习笔记(深入)”;
基本语法:
class MyClass {
public function __construct($param = null) {
// 初始化代码
}
}
示例:定义一个带参数的构造函数
class Person {
private $name;
public function __construct($name) {
$this->name = $name;
echo "Hello, I'm " . $this->name;
}
}
// 创建对象时传递参数
$p = new Person("Alice"); // 输出: Hello, I'm Alice
构造函数的常见用途
构造函数常用于以下场景:
- 初始化对象属性:将传入的值赋给对象的成员变量
- 依赖注入:把其他对象或服务传入当前对象
- 自动加载资源:比如打开文件、连接数据库
- 验证输入:在对象创建时检查必要参数是否合法
示例:数据库类自动连接
class Database {
private $conn;
public function __construct($host, $user, $pass, $dbname) {
$this->conn = mysqli_connect($host, $user, $pass, $dbname);
if (!$this->conn) {
die("Connection failed");
}
echo "Connected successfully";
}
}
$db = new Database("localhost", "root", "", "testdb");
注意事项
使用构造函数时要注意以下几点:
- 一个类只能有一个__construct方法(不支持重载)
- 如果父类有构造函数而子类也定义了,子类必须手动调用parent::__construct()来继承父类初始化逻辑
- 从PHP 5起推荐使用__construct,而不是旧式的与类同名的方法
子类继承示例:
class Student extends Person {
private $school;
public function __construct($name, $school) {
parent::__construct($name); // 调用父类构造函数
$this->school = $school;
}
}
基本上就这些。只要记住__construct会在new的时候自动运行,适合做初始化工作,注意参数传递和父类调用即可。











