$object = new foo; # сработал __constructor
Теперь если я сделаю что-то вроде:
$object = __;
$object = null;
unset($object);
То где из трёх вариантов сработает деструктор и память высвободится? Если не то пишу, скажите как нужно. Пасиба :)
Спустя 15 минут, 5 секунд (10.01.2012 - 18:24) Xes написал(а):
Применяйте деструктор, когда объект удаляется из памяти. Вам может понадобиться сохранить объект в базе данных, закрыть открытые файлы, которые взаимодействовали с объектом. Чтобы создать деструктор, добавьте в класс метод __destruct(). Он вызовется как раз перед удалением объекта автоматически. Вот простой пример:
9 unset( $myObject ); // отобразит "I'm about to disappear - bye bye!"
1 class MyClass {
2 public function __destruct() {
3 echo "I'm about to disappear - bye bye!";
4 // (очистить память)
5 }
6 }
7
8 $myObject = new MyClass();
9 unset( $myObject ); // отобразит "I'm about to disappear - bye bye!"
Спустя 17 минут, 31 секунда (10.01.2012 - 18:41) Commander Keen написал(а):
Я знаю что такое деструктор ) Вот за 9 line спасибо, это то, что я и спрашивал. То есть unset($object). Ясно, спасибо. Просто в языках с которыми я работал деструктор нужно вызывать в наглую, когда нужно. Например .free в Delphi или delete в CPP, иначе память сама тебе скажет "I'm about to disappear - bye bye!" Спасибо за ответ.
Спустя 5 минут, 4 секунды (10.01.2012 - 18:46) Nikitian написал(а):
Просто в php деструктор не удаляет объект, а используется как триггер на удаление.