Что делаем: создаем класс 1, создаем класс 2 в конструкторе класса 1 и в него передаем ссылку на $this. Далее в классе 1 меняем значение переменной. А из класса 2 получаем значение переменной. В итоге возвращается NULL. Код ниже:
Код:
<?
// =================================================
class Test1 {
var $m_Variable = null;
var $m_Test1 = null;
function Test1() {
$this->m_Test1 = new Test2($this);
// $this->m_Variable = array('1234567890');
}
function Go() {
$this->m_Variable = array('1234567890');
$this->m_Test1->PrintOutVariable();
}
function GetVarContent() {
return $this->m_Variable;
}
}
// =================================================
class Test2 {
var $m_Test1Reference = null;
function Test2(&$par_Test1) {
$this->m_Test1Reference = &$par_Test1;
}
function PrintOutVariable() {
var_dump($this->m_Test1Reference->GetVarContent());
}
}
// =================================================
$l_Obj = new Test1();
$l_Obj->Go();
?>
Если раскомментировать присвоение в конструкторе, то из класса 2 значение печатается корректное. Такое ощущение, что после выхода из конструктора создается еще один экземпляр класса, и он не есть $this, который передали в конструктор Test2.
Как сделать так, чтобы переменная $this->m_Variable имела корректное значение при обращении из Test2?