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.