Konstruktorok és destruktorok
Konstruktor
A PHP 5 lehetővé teszi a fejlesztők számára, hogy konstruktor metódust deklaráljanak osztályoknak. Azok az osztályok, melyeknek van konstruktor metódusuk, meghívják ezt a metódust minden egyes újonnan létrehozott objektumon, ezért ez alkalmas bármilyen kezdeti beállításhoz ami az objektum számára szükséges a használata előtt.
Note: A szülő konstruktor nem hívódik meg, ha az utód osztály definiál egy konstruktort. A szülő konstruktor futtatásához meg kell hívni a parent::__construct() metódust az utód konstruktorban.
Example#1 Új egységes konstruktorok használata
<?php
class BaseClass {
function __construct() {
print "BaseClass konstruktor\n";
}
}
class SubClass extends BaseClass {
function __construct() {
parent::__construct();
print "SubClass konstruktor\n";
}
}
$obj = new BaseClass();
$obj = new SubClass();
?>
A visszafelé kompatibilitás érdekében ha a PHP 5 nem talál __construct() függvényt az addot osztályban, megkeresi a régi stílusú konstruktor függvényt, aminek a neve megegyezik az osztályéval. Hathatósan ez azt jelenti, hogy csak akkor van kompatibilitási probléma, ha az osztálynak van egy metódusa __construct() néven és másmilyen a szemantikája (más lenne az eredeti célja, nem az, hogy konstruktor legyen).
Destruktor
A PHP 5 által bevezetett destruktor hasonló a többi objektum-orientált nyelvekéhez, mint a C++. A destruktor metódus akkor hívódik meg, amint az összes referencia az egyéni objektumhoz vagy amikor az objektum nyíltan megsemmisül.
Example#2 Destruktor példa
<?php
class MyDestructableClass {
function __construct() {
print "Konstruktor\n";
$this->name = "MyDestructableClass";
}
function __destruct() {
print $this->name . " megsemmisítése\n";
}
}
$obj = new MyDestructableClass();
?>
A konstruktorokhoz hasonlóan, a szülő destruktort nem hívja meg a motor közvetlenül. A szülő destruktor futtatásához nyíltan meg kell hívnod a parent::__destruct() metódust a destruktorban.
Note: A destruktor a program leállítása során hívódik meg, tehát a fejlécek már mindig el vannak küldve.
Note: Kivétel dobása a desturktorból fatális hibát eredményez.