Felix Riesterer: wie __destruct sinnvoll nutzen?

Beitrag lesen

Liebe PHPler,

wer hat mit PHPs Objektorientierung genügend Erfahrung und kann mir sagen, ob ich das Prinzip richtig verstanden habe? Hier meine Mutmaßungen, um deren Bestätigung bzw. Widerlegung ich bitte:

#1
In einem Objekt als Eigenschaften vorhandene Stream-Resourcen "sterben" in dem Moment, wo __destruct aufgerufen wird. Im Code (besser "scope") dieser speziellen Funktion (alias Methode) habe ich keine wirklich existierenden Referenzen auf Stream-Resourcen mehr. Anscheinend hat es nur dann einen Sinn diese Methode zu notieren, wenn man im Rahmen der Vererbung eventuelle Elternobjekte "sterben lassen" möchte.

#2
Stream-Resourcen werden beim Zerstören des Objektes automatisch von PHP geschlossen. Entweder durch das explizite Aufrufen von __destruct(), oder durch ein unset($obj).

Bisherige Erkenntnisse:
Ich habe mir eine Funktion gebastelt, die die Resource korrekt schließt, um anschließend $this->__destruct() aufzurufen. War das so im Sinne des Prinzips?

Debug-Ausgaben liefern auch innerhalb des Codes von __destruct Eigenschaften des Objekts, auch der "file handles" (konkret: "Resource id #7"). Trotzdem scheitert dort ein Aufruf von fclose() mit der Fehlermeldung, es handle sich um keine gülte Stream-Resource. Daher mein Umweg über eine "vorgeschaltete" Methode.

Vielleicht noch ein Hinweis: PHP5.5.1

Liebe Grüße,

Felix Riesterer.

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