phpbar.de logo

Mailinglisten-Archive

[php] Destruktor in PHP

[php] Destruktor in PHP

Markus Dobel php_(at)_phpcenter.de
Tue, 29 Jan 2002 15:40:06 +0100


On Tue, Jan 29, 2002 at 11:06:14AM +0100, Alexander Merz wrote:
> > Die gibt es meines Wissens erst mit der ZendEngine2, die
> > in PHP5 eine Rolle spielen wird. Ansonsten werden instanziierte
> > Objekte automatisch am Ende des Scripts gelöscht, alternativ
> 
> Nachtrag: Mir ist eigentlich vollkommen unklar, warum in aller Welt jeder eine
> Destruktor-Funktion in Klassen haben will.

z.B., weil mit der "Vernichtung" des Objektes noch andere
Aufraeumaktionen einhergehen sollen. Denkbar waere z.B., Unterobjekte
ebenfalls zu loeschen oder gar noch irgendwelche in Verbindung mit dem
Objekt gelockten Datensaetze in einer Datenbank wieder freizugeben.

> In jeder Sprache mit integrierter GC ist es nicht vorraussehbar, wann
> das Objekt aus dem Speicher geräumt wird und somit der Destruktor
> aufgerufen wird.

Seit wann hat PHP eine Garbage Collection? Bei der ueblichen Laufzeit
eines PHP-Scripts mitunter auch nich unbedingt noetig.

> Wer innerhalb eines Objektes Resourcen zu einen bestimmten Zeitpunkt
> (=wenn ich es nicht mehr brauche) freigeben will o.ä., muss deshalb
> sowieso eine eigene Funktion schreiben und diese manuell aufrufen.

Das ist die klassische Aufgabe eines Destruktors. Ressourcen, die
waehrend der kompletten Lebenszeit des Objektes gebunden sein muessen,
wieder freizugeben.

Gruss, Markus

-- 
Free the Fluffy Bunny.


php::bar PHP Wiki   -   Listenarchive