Время жизни объекта PHP - PullRequest
       14

Время жизни объекта PHP

4 голосов
/ 21 октября 2010

Я использую PHP 5.2. Если я создаю объект на одной странице, когда этот объект будет уничтожен? Является ли объект уничтоженным автоматически в то время, когда пользователь переходит на другую страницу .php, или мне нужно явно вызвать __destructor?

Ответы [ 2 ]

10 голосов
/ 21 октября 2010

Он будет уничтожен (выгружен из памяти) в конце загрузки страницы, или если вы удалили все ссылки на него ранее. Вам не придется уничтожать его вручную, поскольку PHP всегда очищает всю память в конце скрипта.

На самом деле, вы никогда не должны звонить __ разрушать себя. Используйте unset , чтобы сбросить ссылку на объект, когда вы хотите уничтожить его. __destruct на самом деле не уничтожит ваш объект, это просто функция, которая будет автоматически вызываться из PHP непосредственно перед уничтожением, так что вы получите возможность убрать до того, как он будет уничтожен. Вы можете вызывать __destruct сколько угодно раз, не возвращая свою память.

Если, однако, вы сохранили объект в переменной сеанса, он скорее будет "спать", чем уничтожаться. См. Руководство по __ sleep . Конечно, он все равно будет выгружен из памяти (и сохранен на диск), поскольку PHP не хранит ничего в памяти между скриптами.

0 голосов
/ 21 октября 2010

Все объекты уничтожаются (вызывается метод __destruct), когда в текущем скрипте больше нет ссылок на них.Это происходит, когда вы либо unset все переменные, которые содержали этот объект, либо когда скрипт заканчивается.

...