PHP - 扩展 class 修改保护父级

PHP - Extends class modify protect parent

我创建了一个扩展 class 以便为特定目的修改受保护的变量。但是我不明白如何从子 class 修改父 class protected var 并在父函数中的任何地方使用它。

例如:

class parent {

    protected $data;

    public function __construct() {
        add_action('wp_ajax_output', array(&$this, 'output'));
    }

    public function output() {
        get_data();
        show();
    }

    public function get_data() {
        $this->$data = 'data_1';
    }


    public function show() {
        // here I'm using the protected var (I would like to use it from child)
        echo $this->data;
    }

}
new parent();

class child extends parent {


    public function __construct() {
        parent::__construct();
        add_action('wp_ajax_child_output', array(&$this, 'child_output'));
    }

    public function child_output() {
        $this->data = 'data_2';
        // I would like to use  $this->data in parent::show();
        parent::show();
    }

}
new child();

如何覆盖父级中所有受保护的变量使用?

如果您从父对象 class 创建一个对象,那么您将按原样使用父对象 class。如果您从子 class 创建一个对象,那么它会继承父 class 的所有属性和方法,因此子 class 有一个 属性 $数据和三个额外的方法

我刚刚测试了您的代码,它给出了正确的输出。问题出在别处。 当您使用 child_output() 时,您会正确使用它。所有受保护的属性都可以通过子 class 以及所有受保护的 public 方法直接访问。