[Php-it] unset() di un oggetto

Heber D'Alberto heber at dalberto.it
Wed Jun 7 21:46:57 CEST 2006


Cristiano Verondini wrote:
>    Se ci sono altri oggetti che compaiono come variabili membro 
> dell'oggetto che vuoi cancellare, la cancellazine di questi e la 
> conseguente chiamata del distruttore, viene fatta automaticamente. 
> Ovviamente, nel caso in cui ci siano dei *riferimenti* all'oggetto, la 
> cancellazione reale dell'oggetto avverrà solamente quando viene 
> cancellato l'ultimo riferimento.
> 
>    Da quanto detto risulta ovvio che non si deve chiamare esplicitamente 
> il distruttore di un oggetto.


Scusa la petulanza ma mi interessa capire bene sta cosa.
Dunque, mettiamo che ho:
Class A {
	...
	function pippo() {
		$altroOggetto = new AltroOggetto();
		...
	}
}

quindi:
$pluto = new A();
...

mettiamo che, ad un certo punto, faccio un uso esplicito di 
unset($pluto), succede che:
1) viene distrutto (e quindi deallocato) $altroOggetto e
2) viene distrutto l'oggetto $pluto.
E' corretto o mi sbaglio?

Ma mettiamo che $altroOggetto abbia aperta una sessione con un DBMS o 
altro simile, cosa succede in questo caso? Da quello che mi dici viene 
invocato il metodo __destruct() (se presente) implementato nella classe 
A o mi sbaglio?
Quindi, se è vero quanto sopra, devo aver implementato in tale metodo 
(__destruct()) un qualcosa che mi chiuda questo collegamento con il 
DBMS. Giusto?

Spero di essermi spiegato.


Heber D'Alberto


More information about the Php-it mailing list