Правильный способ установить защищенную переменную из другого класса Переполнение стека

У меня есть эта проблема, чтобы решить:
Я создаю два класса, где второй является продолжением первого и там я хочу
установить и получить переменную из первого класса, но … я не могу найти «правильный» способ сделать это
в основном это:

class class_one {

protected $value;
private $obj_two;

public function __construct() {
$this->obj_two = new class_two;
}

public function firstFunction() {

$this->obj_two->obj_two_function();

echo $this->value; // returns 'New Value' like set in the class two

}

}

class class_two extends one {
public function obj_two_function() {
"class_one"->value = 'New Value';
}
}

Как я могу это сделать?

3

Решение

Первый класс не должен инициализировать второй, если вы не ищете Уроборос! Защищенные переменные могут быть установлены расширенным классом без какой-либо поддержки функции. Просто иди $this->protVariable = "stuff";

Но вам понадобится функция, которая может быть защищена для установки приватной переменной ClassOne из второго класса. Аналогично, функция должна быть сделана в ClassOne для фактического получения ее значения.

class ClassOne {
private $privVariable;
protected $protVariable;

/**
*/
function __construct () {

}

/**
* This function is called so that we may set the variable from an extended
* class
*/
protected function setPrivVariable ($privVariable) {

$this->privVariable = $privVariable;

}

}

Во втором классе вы можете позвонить parent::setPrivVariable() установить значение с помощью родительской функции.

class ClassTwo extends \ClassOne {

/**
*/
public function __construct () {

parent::__construct ();

}

/**
* Set the protected variable
*/
function setProtVariable () {

$this->protVariable = "stuff";

}

/**
* see ClassOne::setPrivVariable()
*/
public function setPrivVariable ($privVariable) {

parent::setPrivVariable ( $privVariable );

}

}
3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]