2015-06-05 43 views
1

我为了修改特定目的的保护VAR创建一个扩展类。然而,我不明白我怎么可以修改父类protected var从一个子类,并在父函数中的任何地方使用它。PHP - 扩展类修改保护父

例如:

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(); 

我如何可以覆盖父所有受保护的变种使用?

+0

和实际不工作? –

+0

$这 - >数据是在父秀()函数的空当我运行小孩输出功能 – freaky

回答

2

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

+0

你是对的问题来自于其他地方。谢谢。 – freaky

-1

如果从父类创建一个对象,那么你使用的是父类,因为它是。如果您创建一个从子类的对象,那么它继承父类的所有属性和方法,从而子类有一个属性$数据和三个额外的方法