Is a class destructor in PHP predictable? When is the destructor called?
Like in many languages, will a class destructor be called as soon as the object goes out of scope?
PHP 5 introduces a destructor concept
similar to that of other
object-oriented languages, such as
C++. The destructor method will be
called as soon as all references to a
particular object are removed or when
the object is explicitly destroyed or
in any order in shutdown sequence.
It’s called when the first of these conditions are met:
- The reference count of the object goes to 0 (these usually happens when the object has no more variables that reference it — they were unset or went out of scope –, but it can happen later, as an object may be referenced by something other than a variable — in fact, the reference count is just a number and can be manipulated in an arbitrary way).
- When using PHP 5.3, when the garbage collector detects the positive reference count is due to circular references.
- Otherwise, when the script finishes cleanly.
In short, you should not rely on it always being called, because the script may not finish cleanly.