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:)