Forum und email

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 {
    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 
extends {
}

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

Caution

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.