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.