Я создал расширенный класс для того, чтобы модифицировать защищенную переменную для определенной цели. Однако я не понимаю, как я могу изменить защищенный 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 в parent?
Я только что проверил ваш код, и он выдает правильный вывод. Проблема лежит где-то еще.
когда вы используете child_output (), вы используете его правильно. Все защищенные свойства доступны напрямую через дочерний класс, а также через все защищенные открытые методы.
если вы создаете объект из родительского класса, то вы используете родительский класс как есть. Если вы создаете объект из дочернего класса, он наследует все свойства и методы от родительского класса, таким образом, дочерний класс имеет свойство $ data и три дополнительных метода.