PHP kézikönyv
Előző | 18. Fejezet. Osztályok, objektumok (PHP 4-ben) | Következő

# 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.

Figyelem
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.

Előző | Tartalom | Következő
extends | Fel | Hatókör megadó operátor (::)