Felix Riesterer: wie __destruct sinnvoll nutzen?

Beitrag lesen

Lieber dedlfix,

Weder konstruiert eine Konstruktor-Funktion ein Objekt noch zerstört es die Destruktor-Funktion. Beide werden nur jeweils wärend eines solchen Prozesses aufgerufen, wenn vorhanden.

das ist sehr wesentlich für mein Verständnis! Danke!

Weiterhin wird das Ressourcen-Handle nicht gegen beispielsweise null oder false ausgetauscht. Es bleibt Ressourcen-Handle. Mit einem einfachen echo sieht man im geöffneten Zustand und nach fclose() immer nur "Resource id #3". Mit vardump hingegen wird aus "resource(3) of type (stream)" nach dem Schließen ein "unknown" aus dem "stream". Wenn man nur das echo anschaut, kann man leicht zu einem falschen Schluss bezüglich des Status der Ressource kommen.

OK... Und wie mache ich es "am besten" mit meiner geöffneten Datei? Lasse ich einfach $obj->f stehen und benutze ein unset($obj), womit das Dateihandle jetzt sofort geschlossen wird, oder muss ich vor dem unset() noch irgendwie ein fclose() ausführen lassen (z.B. innerhalb der close-Methode), weil der GC mit dem Schließen der Datei noch länger auf sich warten lassen könnte?

Was ich noch überhaupt nicht verstanden habe, ist die Frage, on __construct() bzw. __destruct() eine "public" oder "private" Funktion sein sollte, und warum.

Liebe Grüße,

Felix Riesterer.

--
ie:% br:> fl:| va:) ls:[ fo:) rl:| n4:? de:> ss:| ch:? js:) mo:} zu:)