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

  • Автор темы Автор темы Screjet
  • Дата начала Дата начала
Re: Люди! Ктото знает метод уничтожения экземпляра класса?

Тебе надо просто создать свой интерфейс для работы с базовым классом. Где интерфейсный класс будет создавать , модифицир и удалять ссылки на объекты.
 
Автор оригинала: 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']) )
 
покурил :)

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

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

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