A konstruktor egy speciális metódus, amely egy objektum példányosítása során automatikusan meghívódik, akkor is ha azt nem definiáltuk. A PHP 5. verziótól támogatott. Ha definiáljuk a konstruktort, akkor bemenő paramétereket is megadhatunk neki, amelyek a tulajdonságoknak kezdőértékként szolgálhatnak.
A konstruktor szintaktikája:
void __construct ([ mixed $args [, $... ]] )
Egy osztályban egy kocsi tulajdonságait tároljuk, rendszám, szín és ár. A konstruktor segítségével kezdőértéket adunk a tulajdonságoknak.
<?php class Kocsi { public $rendszam; public $szin; public $ar; public function __construct($rendszam, $szin, $ar) { $this->rendszam = $rendszam; $this->szin = $szin; $this->ar = $ar; } } ?>
A következő példában egy metódust is deklarálunk, amellyel kiíratható az objektum tulajdonságainak aktuális értéke.
<?php class Kocsi { public $rendszam; public $szin; public $ar; public function __construct($rendszam, $szin, $ar) { $this->rendszam = $rendszam; $this->szin = $szin; $this->ar = $ar; } public function mutatReszletek() { print "{$this->rendszam} | {$this->szin} | {$this->ar} Ft"; } } ?>
A konstruktor neve lehet az osztály neve is, de névteres osztályokban nem működik az 5.3.3-tól:
<?php class Dolgozo { public $nev; public function Dolgozo($nev) { $this->nev = $nev; } }
Osztály névtérben:
<?php namespace Foo; class Bar { public function Bar() { // konstruktorként kezeljük a PHP 5.3.0-5.3.2 verziókban // Általános metódusként kezeljük a PHP 5.3.3 verziótól, // névterek használata esetén } } ?>
Destruktor szintaxisa:
void __destruct ( void )
<?php class MyDestructableClass { function __construct() { print "In constructor\n"; $this->name = "MyDestructableClass"; } function __destruct() { print "Destroying " . $this->name . "\n"; } } $obj = new MyDestructableClass(); ?>
<?php class Szemely { public function Szemely($nev) { $this->nev = $nev; } } class Dolgozo extends Szemely { } $mari = new Dolgozo("Ari Mária"); echo $mari->nev;
A Szemely osztály konstruktora kerül meghívásra.