PHP 子类如何使用父类中定义的魔术方法?

php 子类如何使用父类中定义的魔术方法?

php 子类使用父类魔术方法

父类中定义了魔术方法,子类如何才能在子类中使用这些魔术方法呢?

假设我们有一个父类 p,它定义了以下魔术方法:

class p {
    private $name = "";

    function __construct() {
        $this->name = "hello";
    }

    public function __set($name, $value) {        
        $this->$name = $value;      
    }

    public function showname() {
        echo $this->name;
    }
}

要在子类中使用这些魔术方法,需要以下步骤:

  1. 定义一个子类 c 继承父类 p。
  2. 在子类构造函数中调用父类构造函数。
  3. 在子类中对父类私有成员进行赋值,这将触发 __set() 魔术方法。

例如,以下子类 c 继承了父类 p 魔术方法:

class c extends p {
    function __construct() {
        parent::__construct();

        $this->name = "你好";
    }
}

创建该子类的一个实例并调用 showname() 方法:

$c = new C;
$c->showName();

由于子类继承了父类并调用了父类构造函数,因此子类也会初始化 $name 为 "hello"。随后,子类对 $name 进行赋值,这将触发 __set() 魔术方法,最终输出 "你好"。

这就是子类如何使用父类中定义的魔术方法。通过这种方式,子类可以扩展和增强父类的功能,而无需重新定义魔术方法。

以上就是PHP 子类如何使用父类中定义的魔术方法?的详细内容,更多请关注其它相关文章!