поведение деструктора php

Я пытаюсь понять php конструктора и поведение деструктора. Все идет как ожидалось с конструктором, но я испытываю затруднения, заставляя деструктор стрелять неявно. Я сделал все чтение на php.net и связанных сайтах, но я не могу найти ответ на этот вопрос.

Если у меня есть простой класс, что-то как:

class test{

     public function __construct(){
          print "contructing<br>";
     }

     public function __destruct(){
          print "destroying<br>";
     }
}

и я называю его с чем-то как:

$t = new test;

это печатает сообщение конструктора. Однако я ожидал бы, что, когда концы сценариев и страница представляется этим, деструктор должен стрелять. Конечно, это не делает.

Если я называю сброс ($t); когда концы сценариев, конечно, огни деструктора, но являются там способом заставить это стрелять неявно?

спасибо за любые подсказки

10
задан codingninja 4 October 2013 в 18:51
поделиться

1 ответ

Магическая функция __destruct() выполняется при удалении/уничтожении объекта (с помощью unset). Она не вызывается при завершении работы скрипта. Когда PHP-скрипт завершает выполнение, он очищает память, но не "удаляет" объекты как таковые, поэтому методы __destruct() не вызываются.

Возможно, вы имеете в виду register_shutdown_function(), которая срабатывает, когда ваш PHP-скрипт завершает выполнение.

function shutdown()
{
    // code here
    echo 'this will be called last';
}

register_shutdown_function('shutdown');
5
ответ дан 3 December 2019 в 16:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: