Уничтожение обьекта.

demongloom

Новичок
Уничтожение обьекта.

Можно ли сделать уничтожения обьекта из самого обьекта?

к примеру типа такого.
PHP:
class obj {
   public function __construct($a) {
      if($a == 1) {
          unset($this);
      }
   }
}

$a = new obj(1);

isset($a); // false
 

Nirva

Dmitry Polyakov
ты сегодня ночью наркотиков не объелся? у тебя "идеи" так и прут.
1. а попробовать - слабо?
2. чем отличается класс и объект знаешь?
3. зачем нужен __construct()?
 

zap

Guest
ну если откапал "public function __construct()" почему там же ненашол "public function __destructor()" ?
 

itprog

Cruftsman
zap
Я думаю он нашел, но прочитав о нем понял что это ему не нужно. __destructor() вызывается при уничтожении объекта, скажи мне пожалуйста как он может ему помочь?

Nirva
Ну идея хоть и глупа, но право на существование имеет. О том что такое __construct можешь прочитать здесь.

demongloom
А почему нужно обязательно в классе уничтожать объект? Не проще ли вообще не создавать объект если первый аргумент равен одному?
 

zap

Guest
Автор оригинала: itprog
zap
Я думаю он нашел, но прочитав о нем понял что это ему не нужно. __destructor() вызывается при уничтожении объекта, скажи мне пожалуйста как он может ему помочь?
да согласен неподумав запихнул пост!

а зачем ему вообще нужно думать об уничтожении объекта когда он сам уничтожится после отработки?
 

demongloom

Новичок
я знаю что такое __construct и что такое __destruct.

В чем байда.
Представьте что есть класс который используется как обьект. При создании обьекта нужно обязательно указать параметры. Просто если параметры неправильные, то обьект не должен создаватся. Ведь я не могу вернуть результат функции true/false в __construct().

-~{}~ 16.07.05 19:28:

Кажется дошло что можно использовать.
сбрасывать exception при ошибке, и перехватывать его в коде который создает обьект.

то бишь типа такого
PHP:
class obj {
   public function __construct($a) {
      if($a == 1) {
          throw new exception("err",e_user_error);
      }
   }
}

try {
    $a = new obj(1);
} catch (Exception $e) {
    trigger_error($e->getMessage(),$e->getCode);
}
Более элегантное решение.
 
Сверху