PHP 构造函数

2025年4月16日 | 阅读 4 分钟

在 PHP 中,构造函数是一个特殊的名为 __construct() 的方法,在实例化对象时会自动调用。它负责创建对象的初始状态并初始化其属性。设置默认属性值、数据库连接以及执行对象所需的其他设置操作都由构造函数完成。

为什么使用构造函数?

构造函数是 PHP 5 中用于在创建时初始化对象的特殊函数。要设置对象在使用前所需的任何默认值或执行任何设置操作,构造函数是理想的选择。在 PHP 中指定构造函数的最新且推荐的方法是使用 __construct 方法。虽然在更高版本中已被弃用,但 PHP 5 支持使用与类名相同的函数名来命名构造函数的旧技术。

在子类的构造函数中显式调用 parent::__construct(),以便执行父类的构造函数。这为程序员提供了更大的灵活性,可以控制在创建对象时如何以及何时执行父类初始化。

我们将讨论以下主题

  • __construct() 函数
  • 带参数的构造函数
  • 构造函数重载
  • 构造函数中的类型声明

__construct() 函数

PHP 中的 __construct() 方法用于初始化对象。

语法

每当从类创建新对象时,都会自动调用构造函数。但是,定义构造函数不是强制性的。如果存在,它为对象在使用前可能需要的任何必要初始化提供了一个方便的位置。

构造函数可以接受任意数量的参数。__construct() 方法不返回值。

示例

立即执行

输出

Brand: Toyota
Price: 15000

带参数的构造函数

由于在对象创建时就调用了构造函数,因此 $car1 的成员变量已初始化,无需调用 setBrand() 和 setPrice() 方法。但是,由于此构造函数将用于每个对象,因此每个对象的品牌和价格属性都相同。

定义带有参数的 __construct() 方法,以便使用一组不同的值初始化每个对象。

示例

立即执行

输出

Brand: Toyota
Price: 15000
Brand: Honda
Price: 18000

构造函数重载

一个类可以有多个具有不同参数数量的构造函数声明;这种现象在 面向对象编程 中称为方法重载。但是,PHP 不支持方法重载。使用构造函数中带有默认值的参数可以绕过此限制。

示例

立即执行

输出

Brand: Toyota
Price: 15000
Brand: Honda
Price: 0
Brand: Unknown
Price: 0

构造函数中的类型声明

PHP 7.0 及更高版本允许对函数参数进行标量类型声明。因此,__construct() 函数可以声明为

示例

立即执行

输出

Brand: Hyundai
Price: 18000
Brand: Ford
Price: 22000

结论

总之,构造函数是 PHP 面向对象编程的关键部分。它们可用于定义对象的初始状态并设置其属性。通过使用构造函数确保对象在使用前得到正确设置,可以编写更可靠、更可预测的代码。构造函数可以调用其他类方法、接受参数并执行其他设置职责。


下一主题PHP 析构函数