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 方法直接访问。
我创建了一个扩展 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 方法直接访问。