Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Создание объекта по ссылке

Сообщения:  [1-6] 

 
 автор: ddhvvn   (01.06.2010 в 09:54)   письмо автору
 
   для: neadekvat   (31.05.2010 в 22:05)
 

Иии ?

  Ответить  
 
 автор: neadekvat   (31.05.2010 в 22:05)   письмо автору
 
   для: Tonik992   (31.05.2010 в 21:02)
 

Тема за 2004 год..

  Ответить  
 
 автор: Ирбис   (31.05.2010 в 21:37)   письмо автору
 
   для: Tonik992   (31.05.2010 в 20:40)
 

Интересно.... Тогда получается, что у нас в этой строчке создается один объект:
new PEAR_class(); - создать класс

В этой 2 объекта:
$obj = new PEAR_class(); - создать класс и скопировать его в $obj

А в этой опять один объект:
$obj = &new PEAR_class(); - создать класс и поместить в $obj ссылку на него

Это действительно так?

  Ответить  
 
 автор: Tonik992   (31.05.2010 в 21:02)   письмо автору
 
   для: Tonik992   (31.05.2010 в 20:40)
 

[поправлено модератором]

  Ответить  
 
 автор: Tonik992   (31.05.2010 в 20:40)   письмо автору
 
   для: Ирбис   (31.05.2010 в 13:59)
 

new PEAR_class(); - создать класс
$obj = new PEAR_class(); - создать класс и скопировать его в $obj
$obj = &new PEAR_class(); - создать класс и поместить в $obj ссылку на него

  Ответить  
 
 автор: Ирбис   (31.05.2010 в 13:59)   письмо автору
 
 

Добрый день! Хочу разобраться с созданием объекта по ссылке.

1. Обычное создание объекта и его последующее уничтожение:
<?php
$obj 
= new cls();
unset(
$obj);
?>

В этом случаи у нас в оперативной памяти создается объект, обратится к которому можно, используя псевдоним $obj. При выполнении кода unset($obj) единственный псевдоним объекта уничтожается и поэтому сам объект в оперативной памяти также уничтожается.


2. Создание объекта и создание дополнительного псевдонима для него, а также уничтожение одного из псевдонимов:
<?php
$obj 
= new cls();
$new_obj $obj;
unset(
$obj);
?>

В этом случаи в оперативной памяти также создается объект, но на этот раз у него есть 2 псевдонима. При выполнении кода unset($obj) псевдоним $obj уничтожается, но сам объект в оперативной памяти сохраняется, т.к. у него есть второй псевдоним - $new_obj, который не уничтожен.

3. Создание и уничтожение объекта по ссылке:
<?php
$obj 
= &new cls();
unset(
$obj);
?>

Как я понимаю, строку $obj = &new cls() можно трактовать так(проводя аналогию со вторым вариантом):
В оперативной памяти создается объект, у которого есть 2 псевдонима: один из них - $obj, второй - нам не известен.
А строку unset($obj) так:
Псевдоним $obj уничтожается, а второй неизвестный нам псевдоним остается, поэтому сам объект из оперативной памяти не удаляется.


Скажите, правильно ли я понимаю процесс создания и удаления объекта по ссылке? Если нет, то поправьте пожалуйста меня.

  Ответить  

Сообщения:  [1-6] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования