konstruktor to metoda wywoływana w chwili tworzenia instancji danej klasy, czyli obiektu.
wykonuje się zawsze. Powody jednak moga być rózne.
Jezeli tworzymy obiekt jakiejś klasy i "na wejściu" chcemy mu ustawić jakieś parametry wtedy tak naprawde jest on w pełni wykorzystywany.
na przykład:
mamy pewną klasę Osobnik

<?php
class Osobnik{
$imie;
$plec;
function __contruct($imie, $plec){
$this->imie=$imie;
$this->plec=$plec;
}
}
?>
i teraz utworze sobie obiekt
<?php
$kobieta= new Osobnik('Ala', 'k');
?>
to odrazu w chwili inicjowania obiektu nadałem mu imie i plec, przekazując wartości poprzez kontruktor
można także bezpośrednio przypisac wartości zmiennym np
<?php
class Osobnik{
$imie='Pola';
$plec='k';
function __contruct(){
}
}
?>
i w chwili tworzenia obiektu tej klasy, wartości te bedą przypisane do zmiennych
<?php
$kobieta = new Osobnik();
?>
w tym wypadku, konstruktor tez jest wywoływany, ale nic nie robi
mam nadzieje ze teraz jest jasne po co nam konstruktory

co do destruktorów, to rzecz ma sie podobnie
wywolywany jest z chwila niszczenia danego obiektu.
możemy to jednak zrobić sami w odpowiednim dla nas momencie, właśnie dzięki metodzie __destruct()