PHP – Classi – Costruttore e distruttore

Grazie al metodo costruttore, è possibile decidere quale comportamento deve assumere l’oggetto quando viene creato.

Il metodo costruttore infatti, viene richiamato nella fase di creazione dell’oggetto e si dichiara tramite la funzione __construct .

In questo caso il metodo costruttore permette quando istanzio la classe di utilizzare e valorizzare gli attributi che utilizza la classe.

Ma se esiste un metodo che viene richiamato quando si creano gli oggetti, è altrettanto vero che ne esiste un altro che viene richiamato quando si distruggono: quest’ultimo prende il nome di distruttore.

Se il metodo __construct viene richiamato quando si creano gli oggetti, il rispettivo metodo __destruct viene richiamato nella fase di distruzione degli stessi.


A differenza della fase di creazione degli oggetti, che è assolutamente esplicita, la fase di distruzione non lo è altrettanto. PHP infatti, chiama il metodo distruttore solo quando è davvero sicuro che tutti i riferimenti all’oggetto siano stati cancellati oppure quando l’oggetto è distrutto/cancellato manualmente (per cancellare un oggetto, o in via generale una variabile, è possibile richiamare la funzione unset oppure settare esplicitamente l’oggetto ad un nuovo valore)

Occorre sapere che tutti gli oggetti, come del resto tutte le variabili, vengono distrutti automaticamente da PHP al termine dello script.

Significa che se anche non uso unset comunque al termine dello script la zona in memoria viene eliminata.

E’ interessante quindi eseguire il codice precedente senza unset e si noterà che stamperà ugualmente che il metodo distruttore è stato chiamato.

About Francesco Bragadin

Insegno informatica e telecomunicazioni al liceo scienze applicate ed all'indirizzo informatica e telecomunicazioni. Ho terminato gli studi in ingegneria elettronica e telecomunicazioni lavorando per molti anni come libero professionista nell'ambito della gestione storage e disaster recovery su mainframe.
This entry was posted in Senza categoria. Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *