У меня следующая проблема. Я использую класс, и я хочу сделать некоторое «сохранение (и ведение журнала) событий» в методе __destructor, мне нужно быть уверенным, что мой класс базы данных все еще активен, и даже что мой класс memcache все еще активен.
Я заметил, что метод деструктора может быть вызван слишком поздно. (класс базы данных больше не активен, класс memcache больше не активен)
Обходной путь, который я нашел, это...
$forum = new Forum_class();
$forum->output();
unset($forum) <-- unset it
Это хорошая практика? Или я должен просто пропустить использование метода деструктора, чтобы делать вещи, которые зависят от активности других классов... (доступный класс базы данных, доступный класс memcache...)
Скорее всего, мне не следует отключать мою базу данных и класс memcache как можно скорее, но для других классов вы должны отключить их как можно скорее. (когда они больше не нужны на странице) Или только если вы хотите использовать функцию __destructor?
Или я делаю что-то ужасное неправильно? Просто кажется странным всегда убеждаться, что вы отключили класс. Если я однажды забуду об этом, мой метод __destructor может привести к ошибкам...
Изменить: кажется, я наткнулся на эту ошибку https://bugs.php.net/bug.php?id=39381. Мой класс базы данных и класс memcache используют глобальные переменные...
register_shutdown_function()
. - person nickb   schedule 14.07.2012