За последние 24 часа нас посетили 53997 программистов и 1716 роботов. Сейчас ищут 906 программистов ...

Не понимаю деструктор.

Тема в разделе "PHP для новичков", создана пользователем [pandora], 4 июл 2017.

  1. [pandora]

    [pandora] Активный пользователь

    С нами с:
    18 сен 2012
    Сообщения:
    71
    Симпатии:
    1
    То есть я понимаю, что конструктор вызывается в начале, деструктор в конце, понимаю вот этот пример, но не понимаю, когда он используется? Высвобождает память? Но разве в php это не происходит автоматом? Для чего он тогда нужен, поясните пожалуйста.

    И ещё момент, можно ли конструктором эмитировать цикл? Точнее знаю что можно. Или лучше этого на практике не делать.

    PHP:
    1.  <?php
    2. class MyDestructableClass {
    3.      function __construct() {
    4.          print "Конструктор\n";
    5.          $this->name = "MyDestructableClass";
    6.      }
    7.  
    8.      function __destruct() {
    9.          print "Уничтожается " . $this->name . "\n";
    10.      }
    11. }
    12.  
    13. $obj = new MyDestructableClass();
    14. ?>
     
  2. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Что опишешь в деструкторе, то он и будет делать. В момент уничтожения объекта.
     
  3. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.866
    Симпатии:
    753
    Адрес:
    Татарстан
    угу, может у тебя задача там - удалить какие нить файлики попутно, или записи в БД, или наоборот записать время уничтожения объекта в бд
     
    Fell-x27 и [pandora] нравится это.
  4. [pandora]

    [pandora] Активный пользователь

    С нами с:
    18 сен 2012
    Сообщения:
    71
    Симпатии:
    1
    А, поняла. Спасибо.
     
  5. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    Деструкторы в php немного неудобны тем, что трудно предсказать, когда они будут вызваны, трудно повлиять на очерёдность вызова. Поэтому я их не использую совсем, они немного неопределённость вводят
     
  6. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Как и в любом языке со сборкой мусора автоматической. Деструкторы актуальны в сях и плюсах, где ты ручками объект создаешь и ты же ручками его грохаешь. В языках с GC это, скорее, наследие для галки. Ну или на случай, если в логике используется явное выпиливание объектов.