Передача объектов по ссылке или по указателю? @ DeForum.ru
DeДверь  
Логин:  
Пароль:  
  Автологин  
   
Разместить рекламу
Письмо админу
Правила | FAQ | *Поиск | Наша команда | Регистрация | Вход
 
 
 Страница 1 из 1 [ Сообщений: 4 ] 
*   Список форумов / Начинка и техника / Программирование для WWW » ответить » создать топик « | »
Автор Сообщение
gregzem Муж.
новый человек
2
Сообщения: 252
Зарегистрирован: 29.04.03
Заголовок сообщения: Передача объектов по ссылке или по указателю?
Сообщение Добавлено: 14 Март 2007, 09:01:33 
Код:
<?

class ClassA {
 
}

class ClassB {
  var $RefA = null;

  function ClassB() {

  }

  function InitRefA() {
    $this->RefA = new ClassA();
  }

  function CheckRefA() {
    print "RefA=".$this->RefA."<br>";
  }
 
}

class ClassC extends ClassB {
  var $RefAA = null;
  var $RefB = null;

  function ClassC() {
    ClassB::ClassB();
    $this->RefAA = $this->RefA;
  }


  function CheckRefAA() {
    print "RefAA=".$this->RefAA."<br>";
  }
 
}

$test = new ClassC();
$test->InitRefA();
$test->CheckRefA();
$test->CheckRefAA();

?>


результат

Код:
RefA=Object
RefAA=


Хочется, чтобы обе переменные были инициализированны. Структура классов упрощенная, но в целом передает смысл проблемы. Есть подозрение, что объект передается по ссылке. Это так?
MpaK999 Муж.
участник
1
Сообщения: 1716
Зарегистрирован: 14.11.02
Откуда: Ufa/Russia
Сообщение Добавлено: 14 Март 2007, 10:24:08 
а похапе какой?

_________________
:: metal kick ass ::
Бaзиль Муж.
участник
49
Сообщения: 1288
Зарегистрирован: 13.02.05
Откуда: Околомосковье
Сообщение Добавлено: 14 Март 2007, 12:41:12 
Ну а че тут странного? Класс создается, но в момент выполнения функции ClassC(), $this->RefA равно null, потому что InitRefA() еще не запускалась. Если хочется поиметь ссылку, то надо делать вот так:

$this->RefAA = &$this->RefA;

оффтопик:
ну не то что бы совсем ссылку в ее классическом понимании, но хотя бы алиас, что в данном случае и требуется

_________________
Не кочегары мы, не плотники,
Но сожалений горьких нет -
Как нет?
А мы дизайнеры-художники,
И с высоты вам шлем привет -
Привет!
gregzem Муж.
новый человек
2
Сообщения: 252
Зарегистрирован: 29.04.03
Сообщение Добавлено: 14 Март 2007, 14:37:48 
Верно, null. Спасибо.
*   Список форумов / Начинка и техника / Программирование для WWW « | » » ответить » создать топик
 Страница 1 из 1 [ Сообщений: 4 ] 
Показать сообщения за:   Поле сортировки  
Найти:
Перейти:  
Уровень доступа: Вы не можете начинать темы. Вы не можете отвечать на сообщения. Вы не можете редактировать свои сообщения. Вы не можете удалять свои сообщения. Вы не можете добавлять вложения.
cron


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