PHP前端开发

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

百变鹏仔 2天前 #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;    }}

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

立即学习“PHP免费学习笔记(深入)”;

  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() 魔术方法,最终输出 "你好"。

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