Я пытаюсь понять php конструктора и поведение деструктора. Все идет как ожидалось с конструктором, но я испытываю затруднения, заставляя деструктор стрелять неявно. Я сделал все чтение на php.net и связанных сайтах, но я не могу найти ответ на этот вопрос.
Если у меня есть простой класс, что-то как:
class test{
public function __construct(){
print "contructing<br>";
}
public function __destruct(){
print "destroying<br>";
}
}
и я называю его с чем-то как:
$t = new test;
это печатает сообщение конструктора. Однако я ожидал бы, что, когда концы сценариев и страница представляется этим, деструктор должен стрелять. Конечно, это не делает.
Если я называю сброс ($t); когда концы сценариев, конечно, огни деструктора, но являются там способом заставить это стрелять неявно?
спасибо за любые подсказки
Магическая функция __destruct()
выполняется при удалении/уничтожении объекта (с помощью unset
). Она не вызывается при завершении работы скрипта. Когда PHP-скрипт завершает выполнение, он очищает память, но не "удаляет" объекты как таковые, поэтому методы __destruct()
не вызываются.
Возможно, вы имеете в виду register_shutdown_function()
, которая срабатывает, когда ваш PHP-скрипт завершает выполнение.
function shutdown()
{
// code here
echo 'this will be called last';
}
register_shutdown_function('shutdown');