2009-09-12 16 views
12

Gibt es in PHP eine Möglichkeit, ein Objekt innerhalb desselben Objekts zu zerstören?PHP: Zerstöre ein Objekt aus dem Objekt?

+0

gab eine "Ja-und-hier-ist-wie" Antwort auf eine im Wesentlichen ähnliche Frage hier - http://StackOverflow.com/a/21367011/1537018 –

Antwort

6

Es gibt einen Weg zu sich selbst ein Objekt zerstören:

Verwenden Sie die $GLOBALS Array Instanz darin zu finden, dann unset() verwenden. Beachten Sie, dass unset() nicht automatisch rufen Sie die __destruct() magische Methode die ganze Zeit ...

Es gibt so eine Notiz auf diese Weise (siehe unset() Dokumentation) in der PHP-Dokumentation, aber es nicht genau erklären, wann unset() tut Rufen Sie nicht die __destruct() Methode auf.

Und ich hatte dieses spezifische Verhalten:

ich a:

unset($myInstance); 
$myInstance = clone $otherInstance; 

Und die __constructor erste genannt wird, dann der __destruct(). Oder ich möchte die __destruct() zuerst genannt werden, weil unset() vor dem Klon ist ... Ich bin mit diesem jetzt fest ...

Nicolas.

+2

Destruktoren werden bei der Garbage Collection oder beim Beenden des Skripts aufgerufen. – hakre

+0

Wie bereits erwähnt, wird der Destruktor nicht aufgerufen, bis die Variable $ myInstance den Gültigkeitsbereich verlässt und die Garbage Collection sie aufruft. – Swivel

0

Nein, das glaube ich nicht. Aber würden Sie so etwas brauchen?

+1

Nun, warum nicht? Wenn du ein Objekt erstellst, würde man annehmen, dass es die Fähigkeit geben sollte, sie zu zerstören. – Christian

+2

@Christian die Fähigkeit, ein Objekt Leis an der gleichen Stelle zu zerstören, wo die Fähigkeit, sie zu erstellen - nicht innerhalb des Objekts selbst. –

12

Wenn eine Methode im Kontext des Objekts aufgerufen wird, muss mindestens eine Referenz auf dieses Objekt vorhanden sein. Und da php nur unerreichbare Objekte entfernt, lautet die Antwort: nein.

Verwandte Themen