📜  php 扩展父构造函数 - PHP (1)

📅  最后修改于: 2023-12-03 15:18:29.496000             🧑  作者: Mango

PHP 扩展父构造函数

在 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 的功能。

参考资料