一、构造函数语法
__construct ( mixed ...$values = "" ) : void
PHP 允许开发者在一个类中定义一个方法作为构造函数。具有构造函数的类会在每次创建新对象时先调用此方法,所以非常适合在使用对象之前做一些初始化工作。
注意: 如果子类中定义了构造函数则不会隐式调用其父类的构造函数。要执行父类的构造函数,需要在子类的构造函数中调用 parent::__construct()。如果子类没有定义构造函数则会如同一个普通的类方法一样从父类继承(假如没有被定义为 private 的话)。
二、示例
<?php /** * 定义一个狗类 */ class Cat { //定义一个属性 private $name = null; // 构造函数 function __construct($name){ if(is_null($this->name)){ $this->name = $name; } } /** * 输出名字 */ public function getName(){ echo "这是一只狗,名字叫{$this->name}。"; } } //实例化 $Cat = new Cat(‘旺财‘); $Cat->getName(); //输出:这是一只狗,名字叫旺财。
三、其他
1、与其它方法不同,当 __construct() 被与父类 __construct() 具有不同参数的方法覆盖时,PHP 不会产生一个 E_STRICT 错误信息。 2、自 PHP 5.3.3 起,在命名空间中,与类名同名的方法不再作为构造函数。不使用命名空间中的类则不受影响。 构造函数是一个普通的方法,在对应对象实例化时自动被调用。 因此可以定义任何数量的参数,可以是必选、可以有类型、可以有默认值。 构造器的参数放在类名后的括号里调用。如果一个类没有构造函数,以及构造函数的参数不是必填项时,括号就可以省略。
更多说明示例请看:https://www.php.net/manual/zh/language.oop5.decon.php#object.construct