Konstruktor
A konstruktorok az osztályok olyan metódusai, amelyek automatikusan meghívásra kerülnek egy új objektumpéldány new kulcsszóval történő létrehozása során. Egy függvény akkor lesz konstruktor, ha a neve megegyezik az hordozó osztály nevével. Ha az osztálynak nincs konstruktora, a szülő osytály konstruktora lesz meghívva, már ha létezik.
<?php
class Auto_Kosar extends Kosar {
function Auto_Kosar () {
$this->berak("10", 1);
}
}
?>
Ez egy olyan Auto_Kosar nevű osztályt [objektumtípust] hoz létre, mint a Kosar, csak rendelkezik egy konstruktorral, amely inicializálja a kosarat 1 darab "10"-es áruval, valahányszor a new operátorral hozzuk létre az objektumot. [de csak akkor!!!] A konstruktoroknak is lehet átadni paramétereket, és ezek lehetnek elhagyhatók is, amely még hasznosabbá teszi őket. Ha paraméterek nélkül is használható osztályt szeretnél, állíts be minden paraméternek alapértéket.
<?php
class Konstruktoros_Kosar extends Kosar {
function Konstruktoros_Kosar ($sorsz = "10", $db = 1) {
$this->berak($sorsz, $db);
}
}
// Mindig ugyanazt az uncsi dolgot veszi...
$kiindulo_kosar = new Konstruktoros_Kosar;
// Igazi vásárlás
$masik_kosar = new Konstruktoros_kosar ("20", 17);
?>
Az @ operátor használatával elnémíthatók a konstruktorban fellépő hibák, használata ilyen esetben: @new.
<?php
class A {
function A() {
echo "Én vagyok az A osztály konstruktora.<br />\n";
}
function B() {
echo "Én egy B nevű metódus vagyok az A osztályban.<br />\n";
echo "Nem vagyok A konstruktora.<br />\n";
}
}
class B extends A {
}
// Ez meghívja B()-t, mint konstruktort
$b = new B;
Az A osztály B() metódusa hirtelen konstruktorrá válik a B osztályban, habár ez soha sem volt cél. A PHP 4 nem foglalkozik azzal, hogy a metódus a B osztályban van-e definiálva, vagy öröklés útján áll rendelkezésre.
A PHP 4 nem hívja meg a szülő osztály konstruktorát automatikusan egy leszármazott osztály definiált konstruktorából. A te feladatod, hogy meghívd a szülő konstruktorát, ha szükséges.
A destruktor olyan metódus, ami automatikusan meghívódik, amikor egy objektum megszűnik, akár az unset() meghívásával, akár a környezete megszűnése miatt. PHP-ben nincsenek destruktorok. Ennek pótálsaképp a legtöbb esetben jól alkalmazható a register_shutdown_function() függvény.