Forum und email

Constructori şi Destructori

Constructor

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

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

void __destruct ( void )

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.