Является ли деструктор в PHP предсказуемым?

Является ли деструктор класса в PHP предсказуемым? Когда называется деструктор?

Как и на многих языках, будет вызван деструктор класса, как только объект выходит за рамки?

PHP 5 представляет концепцию деструктора, аналогичную концепции других объектно-ориентированных языков, таких как C ++. Метод деструктора будет вызываться, как только будут удалены все ссылки на конкретный объект или когда объект будет явно уничтожен или в любом порядке в последовательности выключения.

http://php.net/manual/en/language.oop5.decon.php

Он вызывается, когда выполняется первое из этих условий:

  • Счетчик ссылок объекта равен 0 (обычно это происходит, когда объект не имеет больше переменных, которые ссылаются на него – они были отменены или вышли из области видимости), но это может произойти позже, поскольку объект может ссылаться на что-то кроме переменной – на самом деле, счетчик ссылок является просто числом и может манипулировать произвольным образом).
  • При использовании PHP 5.3, когда сборщик мусора обнаруживает, что положительный счетчик ссылок связан с циклическими ссылками.
  • В противном случае, когда скрипт завершится чисто.

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