PHP 面向对象基础:构造方法
什么是构造方法?
构造方法也属于 PHP 魔术方法 的一种。具有构造方法的类会在每次创建对象时先调用此方法,非常适合在使用对象之前做一些初始化工作。
public function __construc([参数])
{
方法体...
}
class Parents
{
public function __construct()
{
echo '调用了 __construct 构造方法。<br />';
}
}
$parents1 = new Parents(); // 调用了 __construct 构造方法。
$parents2 = new Parents(); // 调用了 __construct 构造方法。
class Parents
{
public $father;
public $mother;
// 定义一个构造方法初始化赋值
public function __construct($fName, $mName)
{
$this->father = $fName;
$this->mother = $mName;
}
// 获取属性的值
public function getName()
{
echo 'Father\'name is ' . $this->father . '.<br />';
echo 'Monter\'name is ' . $this->mother . '.<br />';
}
}
$parents1 = new Parents('David', 'Lily');
$parents2 = new Parents('Bob', 'Rose');
$parents1->getName();
// Father'name is David.
// Monter'name is Lily.
$parents2->getName();
// Father'name is Bob.
// Monter'name is Rose.
如果子类中定义了构造方法则不会隐式调用其父类的构造方法。要执行父类的构造方法,需要在子类的构造方法中调用 parent::__construct()。如果子类没有定义构造方法则会如同一个普通的类方法一样从父类继承(假如没有被定义为 private 的话)。
class Parents
{
public function __construct()
{
print 'In Parents constructor<br />';
}
}
class Son extends Parents
{
public function __construct()
{
parent::__construct();
print 'In Son constructor<br />';
}
}
class Daughter extends Parents
{
}
$parents = new Parents();
// In Parents constructor
$son = new Son();
// In Parents constructor
// In Son constructor
$daughter = new Parents();
// In Parents constructor