Странные ссылки @ DeForum.ru
DeДверь  
Логин:  
Пароль:  
  Автологин  
   
Разместить рекламу
Письмо админу
Правила | FAQ | *Поиск | Наша команда | Регистрация | Вход
 
 
 Страница 1 из 1 [ Сообщений: 3 ] 
*   Список форумов / Начинка и техника / Программирование для WWW » ответить » создать топик « | »
Автор Сообщение
gregzem Муж.
новый человек
2
Сообщения: 252
Зарегистрирован: 29.04.03
Заголовок сообщения: Странные ссылки
Сообщение Добавлено: 22 Август 2007, 21:00:41 
Что делаем: создаем класс 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?
Crazy Муж.
Модератор
107
Сообщения: 14561
Зарегистрирован: 23.12.01
Откуда: Moscow
Сообщение Добавлено: 23 Август 2007, 11:28:37 

Цитата:
$l_Obj = new Test1();



Перевожу на русский, что здесь написано: создать экземпляр класса Test1, а затем его копию присоить в l_Obj. Как написал -- так и работает.

Есть такое оператор: =& …
gro
новый человек
17
Сообщения: 43
Зарегистрирован: 09.09.06
Сообщение Добавлено: 23 Август 2007, 16:46:26 
gregzem, в своем вопросе вы умолчали очень важную деталь, а именно версию PHP. В 5-м все будет работать как раз так, как нужно.
Хотя, возможно, вы и не будете понимать почему :)
*   Список форумов / Начинка и техника / Программирование для WWW « | » » ответить » создать топик
 Страница 1 из 1 [ Сообщений: 3 ] 
Показать сообщения за:   Поле сортировки  
Найти:
Перейти:  
Уровень доступа: Вы не можете начинать темы. Вы не можете отвечать на сообщения. Вы не можете редактировать свои сообщения. Вы не можете удалять свои сообщения. Вы не можете добавлять вложения.
cron


ООО ДеФорум
При использовании материалов сайта ссылка на DeForum.ru — обязательна.
Проект Павла Батурина ©2001-2077; // Powered by phpBB © 2013 phpBB Group
Rambler's Top100