Constructors and DestructorsConstructorvoid__constructmixedargs""...
PHP 5 allows developers to declare constructor methods for classes.
Classes which have a constructor method call this method on each
newly-created object, so it is suitable for any initialization that the
object may need before it is used.
Parent constructors are not called implicitly if the child class defines
a constructor. In order to run a parent constructor, a call to
parent::__construct within the child constructor is
required. If the child does not define a constructor then it may be inherited
from the parent class just like a normal class method (if it was not declared
as private).
using new unified constructors
]]>
For backwards compatibility with PHP 3 and 4, if PHP cannot find a
__construct() function for a given
class, and the class did not inherit one from a parent class, it will
search for the old-style constructor function, by the name of the class.
Effectively, it means that the only case that would have compatibility
issues is if the class had a method named
__construct() which was used for
different semantics.
Old style constructors are DEPRECATED in PHP 7.0, and
will be removed in a future version. You should always use
__construct() in new code.
Unlike with other methods, PHP will not generate an
E_STRICT level error message when
__construct() is overridden with different parameters
than the parent __construct() method has.
As of PHP 5.3.3, methods with the same name as the last element of a
namespaced class name will no longer be treated as constructor. This
change doesn't affect non-namespaced classes.
Constructors in namespaced classes
]]>
Destructorvoid__destruct
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 there are no other references to a particular object,
or in any order during the shutdown sequence.
Destructor Example
name = "MyDestructableClass";
}
function __destruct() {
print "Destroying " . $this->name . "\n";
}
}
$obj = new MyDestructableClass();
?>
]]>
Like constructors, parent destructors will not be called implicitly by
the engine. In order to run a parent destructor, one would have to
explicitly call parent::__destruct in the destructor
body. Also like constructors, a child class may inherit the parent's
destructor if it does not implement one itself.
The destructor will be called even if script execution is stopped using
exit. Calling exit in a destructor
will prevent the remaining shutdown routines from executing.
Destructors called during the script shutdown have HTTP headers already
sent. The working directory in the script shutdown phase can be different
with some SAPIs (e.g. Apache).
Attempting to throw an exception from a destructor (called in the time of
script termination) causes a fatal error.