|
|
|
|
|
для: neadekvat
(31.05.2010 в 22:05)
| | Иии ? | |
|
|
|
|
|
|
|
для: Tonik992
(31.05.2010 в 21:02)
| | Тема за 2004 год.. | |
|
|
|
|
|
|
|
для: Tonik992
(31.05.2010 в 20:40)
| | Интересно.... Тогда получается, что у нас в этой строчке создается один объект:
new PEAR_class(); - создать класс
В этой 2 объекта:
$obj = new PEAR_class(); - создать класс и скопировать его в $obj
А в этой опять один объект:
$obj = &new PEAR_class(); - создать класс и поместить в $obj ссылку на него
Это действительно так? | |
|
|
|
|
|
|
|
для: Tonik992
(31.05.2010 в 20:40)
| | [поправлено модератором] | |
|
|
|
|
|
|
|
для: Ирбис
(31.05.2010 в 13:59)
| | new PEAR_class(); - создать класс
$obj = new PEAR_class(); - создать класс и скопировать его в $obj
$obj = &new PEAR_class(); - создать класс и поместить в $obj ссылку на него | |
|
|
|
|
|
|
| Добрый день! Хочу разобраться с созданием объекта по ссылке.
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 уничтожается, а второй неизвестный нам псевдоним остается, поэтому сам объект из оперативной памяти не удаляется.
Скажите, правильно ли я понимаю процесс создания и удаления объекта по ссылке? Если нет, то поправьте пожалуйста меня. | |
|
|
|
|