Constructori ÅŸi Destructori
Constructor
PHP 5 permite dezvoltatorilor să definească constructori pentru clase. Clasele care au definit un constructor vor apela această metodă la fiecare obiect nou creat, pentru ca acesta (obiectul) să fie utilizabil pentru iniţializare înante de a fi folosit.
Notă: Constructorul părinte nu este apelat implicit. Pentru a apela un constructor părinte, trebuie să apelaţi parent::__construct() în clasa descendentă.
Example#1 folosirea metodei de definire a constructorilor
<?php
class ClasaDeBaza {
function __construct() {
print "Sunt în contructorul clasei: ClasaDeBaza\n";
}
}
class ClasaExtinsa extends ClasaDeBaza {
function __construct() {
parent::__construct();
print "Sunt în constructorul clasei: ClasaExtinsa\n";
}
}
$obj = new ClasaDeBaza();
$obj = new ClasaExtinsa();
?>
Pentru compatibilitate cu versiunile mai vechi, dacă PHP 5 nu găseşte funcţia __construct() pentru o clasă, va căuta în formatul vechi o funcţie care are chiar numele clasei. Drept urmare, singura neconcordanţă în compatibilitate va fi atunci când aţi folosit în clase funcţia __construct() pentru alte scopuri decât iniţializarea obiectului.
Destructori
PHP 5 introduce un conceptul de distrugere a unui obiect similar cu cel regăsit în alte limbaje de programare orientate pe obiecte (C++). Metoda de distrugere va fi apelată imediat ce toate referinţele către un anumit obiect dispar sau atunci când obiectul este distrus explicit.
Example#2 Exemplu destructor
<?php
class ClassaCuDestructor {
function __construct() {
print "Sunt în constructor.\n";
$this->name = "ClassaCuDestructor";
}
function __destruct() {
print "Distrug " . $this->name . "\n";
}
}
$obj = new ClassaCuDestructor();
?>
La fel ca la constructori, destructorii părinti nu vor fi apelaţi implicit. Pentru a apela destructorul părinte trebuie să apelaţi explicit parent::__destruct() în destructorul descendent.