📅  最后修改于: 2023-12-03 15:18:29.496000             🧑  作者: Mango
在 PHP 中,扩展是一种向 PHP 添加新功能的机制。扩展可以是一个函数库、一个面向对象的类或是一个语言级别的修改,从而可以加强 PHP 的功能。
类扩展是一种扩展面向对象(OOP)模型的方式。在创建一个扩展类时,我们可以通过继承基类的方式,使扩展类获得基类的属性和方法。在继承基类时,我们可以使用父构造函数来初始化基类的属性。
在 PHP 中,我们可以通过 extends
关键字继承一个基类,并实现一个子类:
class MyBaseClass {
protected $name;
public function __construct($name) {
$this->name = $name;
}
public function getName() {
return $this->name;
}
}
class MyExtendedClass extends MyBaseClass {
public function sayHi() {
echo "Hi, my name is " . $this->name . "\n";
}
}
在这个例子中,我们定义了一个名为 MyBaseClass
的基类,并在其构造函数中初始化了一个名为 $name
的属性。然后,我们定义了一个名为 MyExtendedClass
的扩展类,并使用 extends
关键字将其继承自 MyBaseClass
。在 MyExtendedClass
的构造函数中,我们调用了基类的构造函数,将 $name
传递给它来初始化基类的 $name
属性。
当子类继承一个基类时,如果没有显式地调用其父构造函数,那么基类的构造函数将不会被调用。为了调用基类的构造函数,我们可以使用 parent::__construct()
。例如,在 MyExtendedClass
的构造函数中,我们可以这样使用:
class MyExtendedClass extends MyBaseClass {
public function __construct($name, $age) {
parent::__construct($name);
$this->age = $age;
}
public function sayHi() {
echo "Hi, my name is " . $this->name . ", and I am " . $this->age . " years old.\n";
}
}
在这个例子中,我们重写 MyBaseClass
的构造函数,并在它之前使用 parent::__construct()
来调用基类的构造函数。这里我们传递了 $name
,然后在子类中初始化了 $age
。
通过继承一个基类,并在子类中调用其父构造函数,我们可以获得基类的属性和方法,并在子类中扩展它们。这是一种非常强大的面向对象的技术,可以让我们更加灵活地扩展 PHP 的功能。