Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is destructor in PHP predictable?

Tags:

php

destructor

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?

like image 660
Hemanshu Bhojak Avatar asked Jul 24 '10 16:07

Hemanshu Bhojak


2 Answers

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.

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

like image 108
Ahmed Aman Avatar answered Sep 22 '22 05:09

Ahmed Aman


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.

like image 22
Artefacto Avatar answered Sep 22 '22 05:09

Artefacto