Я использую PHP 5.2. Если я новичок на одной странице, когда этот объект будет разрушен? Является ли объект разрушенным автоматически во время перехода пользователя на другую .php-страницу или мне нужно явно вызвать __destructor?
Он будет уничтожен (выгружен из памяти) в конце загрузки страницы или если вы удалите все ссылки на него ранее. Вам не придется уничтожать его вручную, так как PHP всегда очищает всю память в конце скрипта.
На самом деле, вы никогда не должны называть __destruct себя. Используйте unset для отмены ссылки на объект, когда вы хотите его уничтожить. __destruct фактически не уничтожит ваш объект, это просто функция, которая будет автоматически вызвана PHP непосредственно перед уничтожением, чтобы вы получили возможность очистить ее до ее уничтожения. Вы можете вызывать __destruct столько раз, сколько хотите, не возвращая свою память.
Если, однако, вы сохранили объект в переменной сеанса, он будет «спать», а не быть уничтожен. См. Руководство по __sleep . Конечно, он по-прежнему будет выгружен из памяти (и сохранен на диск), поскольку PHP не хранит ничего в памяти между скриптами.
Все объекты разрушаются ( __destruct
метод __destruct
), когда в текущем скрипте больше нет ссылок на них. Это происходит, когда вы либо unset
все переменные, содержащие этот объект, либо когда скрипт заканчивается.