[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