【问题标题】:PHP - Extends class modify protect parentPHP - 扩展类修改保护父
【发布时间】:2015-08-20 23:55:00
【问题描述】:

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

【问题讨论】:

  • 实际上什么不起作用?
  • $this->当我运行子输出函数时,父 show() 函数中的数据为空

标签: php class variable-assignment extends


【解决方案1】:

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

【讨论】:

  • 你是对的,问题来自其他地方。谢谢。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2011-08-20
    • 2012-01-06
    • 2014-11-08
    • 2019-07-04
    • 2011-10-31
    • 1970-01-01
    • 2022-11-24
    • 1970-01-01
    • 2011-07-28
    相关资源
    最近更新 更多