PHP 构造函数怎么用
在写 PHP 代码的时候,你会不会经常遇到“怎么给刚创建好的对象,直接带上需要的参数”?比如你要做一个“学生类”,每个学生都有姓名、学号,总不能每次创建对象后,再一行一行去给这些属性赋值吧?这时候,PHP 的构造函数就能帮上大忙。
什么是构造函数?
简单来说,构造函数就是类里一个特殊的“自动启动方法”——当你用 new 类名() 创建对象的时候,这个方法会自动跑一遍,不用你手动调用。打个比方,就像你买组装好的家具,拆完包装插好电源、装好轮子的步骤是固定的,不用每次买都重新装一遍,这个固定的“初始步骤”就是构造函数。

比如你做一个“奶茶订单类”,顾客下单时需要选口味、选杯型,那创建订单对象时,直接把这俩信息传进去,构造函数就会自动把这俩信息存到对象的属性里,不用再单独写代码给属性赋值。
怎么写一个构造函数?
PHP 里的构造函数有固定的名字,老版本用 construct(注意是两个下划线开头),现在主流的 PHP 版本都只认这个名字。你只需要在类里写一个方法,名字就是 construct,需要传什么参数就写在括号里,方法里的内容就是你要做的初始操作。
举个生活化的例子,假设我们做一个“外卖订单”的类:
`php
class Order {
// 定义订单的属性,对应口味和杯型
public $flavor;
public $cupSize;
// 构造函数:创建对象时自动执行
public function __construct($f, $c) {
// 把传进来的参数,存到对象的属性里
$this->flavor = $f;
$this->cupSize = $c;
}
}
`
这里的 $this 就像“当前创建的这个对象”,$this->flavor 就是这个对象的口味属性,把传进来的 $f 存进去,就完成了初始设置。
怎么用构造函数创建对象?
用构造函数创建对象特别简单,只需要在 new 类名() 的括号里,把构造函数需要的参数填进去就行,不用再单独给属性赋值。还是用刚才的外卖订单类:
`php
// 创建一个“冰美式+中杯”的订单对象,参数直接传进去
$myOrder = new Order('冰美式', '中杯');
// 直接用对象的属性,不用再赋值了
echo $myOrder->flavor; // 输出:冰美式
echo $myOrder->cupSize; // 输出:中杯
`
要是没有构造函数,你就得这么写:
`php
$myOrder = new Order();
$myOrder->flavor = '冰美式';
$myOrder->cupSize = '中杯';
`
对比一下,用构造函数少写了两行重复的赋值代码,而且能保证每个新对象一创建就有需要的属性,不会出现“没赋值就用属性”的错误。
构造函数的小注意点
第一,一个类里只能有一个构造函数,就像一个人不能同时有两个“刚睡醒的准备步骤”;第二,参数可以是可选的,给参数加个默认值就行,比如构造函数里写 public function __construct($f = '原味奶茶', $c = '大杯'),要是创建对象时没传参数,就会默认生成原味奶茶大杯的订单;第三,构造函数里也能做其他初始操作,比如记录创建时间,或者验证参数是不是合法,比如杯型不能是“超大杯”这种不存在的选项。
学会用构造函数,能让你的 PHP 代码更简洁,也更不容易出错。下次写类的时候,记得把需要初始设置的内容,放到 __construct 里,就能省不少功夫。