PHP - 扩展类修改保护父级

时间:2015-06-05 22:12:51

标签: php class variable-assignment extends

我创建了一个扩展类,以便为特定目的修改受保护的var。但是,我不明白如何从子类修改父类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();

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

2 个答案:

答案 0 :(得分:2)

我刚测试了你的代码,它给出了正确的输出。问题出在其他地方。 当你使用child_output()时,你正确使用它。所有受保护的属性都可以通过子类以及所有受保护的公共方法直接访问。

答案 1 :(得分:-1)

如果您从父类创建一个对象,那么您正在使用父类。如果你从子类创建一个对象,那么它继承了父类的所有属性和方法,因此子类有一个属性$ data和三个额外的方法