Люди! Ктото знает метод уничтожения экземпляра класса?

NEK

Guest
Re: Люди! Ктото знает метод уничтожения экземпляра класса?

Тебе надо просто создать свой интерфейс для работы с базовым классом. Где интерфейсный класс будет создавать , модифицир и удалять ссылки на объекты.
 

NEK

Guest
Автор оригинала: Screjet
гм.. код в студию :)
<

$n1=new my_class(2);
$n2=new my_class(2);
unset($n1);

$n2->func_name(...) // Error объект не существует !!!

Для этого ( из-за невозможн. нормально пользоваться ссылкми) и пишется всякая гадость.

А вообще unset($n1) только отвязывает имя переменной $n от $GLOBALS['n'] (Тута все остается так что unset($n); Unset($GLOBALS['n']) )
 

Screjet

Новичок
покурил :)

Я так понял NEK намекал на деструктор, который занимается тем, что отвязывает от объекта все используемые ссылки.

В ПХП4 нужно вызывать метод, который выполняет операции деструктора перед unset().
 

Crazy

Developer
Автор оригинала: Screjet
В ПХП4 нужно вызывать метод, который выполняет операции деструктора перед unset().
Не годится. Вызывов unset вовсе не означает уничтожения объекта. Соответственно, с некоторой вероятностью после вызова деструктора кто-то сможет (будет) и далее работать с данным объектом, что нелепо.
 

Screjet

Новичок
ONK в этом топике точно описал объект класса. Заглянув в исходники Зенда, я в этом убедился воочию: во всех объектах есть ссылка на структуру класса. Если ссылка не NULL, значит это объект класса. Собственно в этом и отличие объектов от массивов во внутреннем представлении Зенд.
Не годится. Вызывов unset вовсе не означает уничтожения объекта. Соответственно, с некоторой вероятностью после вызова деструктора кто-то сможет (будет) и далее работать с данным объектом, что нелепо.
Верно. Объект не будет уничтожен, если имеются ссылки на его свойства за пределами объекта. Если эти ссылки были созданы в пределах объекта, то ф-ция с ролью деструктора должна уничтожит эти "внешние ссылки". Если эти ссылки были созданы за пределами объекта, то после его уничтожения, объект будет освобожден только после уничтожения этих ссылок.

ЗЫ. На форуме частенько наблюдал пердложение такой оперции:
PHP:
unset($this);
На самом деле $this - это ссылка на реальный объект, следовательно операция unset($this) уничтожит эту ссылку, но не сам объект.
 

Crazy

Developer
Идея с unset($this) проистекает из непонимания семантики псевдофункции unset...
 
Сверху