PHP kézikönyv
Előző | 19. Fejezet. Osztályok és objektumok (PHP 5) | Következő

# Konstruktorok és destruktorok

## Konstruktor

void __construct ( [mixed args [, ...]] )

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.

> Megjegyzés: 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.

Példa 19-8. Ú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

void __destruct ( void )

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.

Példa 19-9. 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.

> Megjegyzés: 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.

> Megjegyzés: Kivétel dobása a desturktorból fatális hibát eredményez.

Előző | Tartalom | Következő
Automatikusan betöltődő objektumok | Fel | Láthatóság