Ja, das ist die Frage!
Folgende Sachen habe ich versucht:
So, ich habe im Destructor also 2 Funktionen benutzt die mir zeigen ob der Destructor aufgerufen wurde!
Variante 1:
Der destructor wird also ausgeführt, es befindet sich aber keine test.txt im Verzeichnis.
Variante 2:
Ich bkomme die test.txt wie gewünscht erstellt, die Ausgabe mit "echo" erfolgt 2x!
Variante 3:
Ich bekomme die test.txt erstellt, und die Ausgabe findet einmal statt! Eigentlich alles wie gewollt!
Aber ich will die Klasse mit einem $eins->close(); oder $eins->__destruct(); beenden.
Aber ich bekomme das oben gezeigte verhalten das der destructor teilweise doppelt ausgeführt wird, wieso?!?!
Folgende Sachen habe ich versucht:
PHP-Code:
class Test
{
...
public function __destruct()
{
fopen("test.txt", "w");
echo "Destruct wird ausgefuehrt";
}
}
Variante 1:
PHP-Code:
$eins = new Test();
// Ausgabe:
// KEINE "test.txt" erstellt!
// Destruct wird ausgefuehrt
Variante 2:
PHP-Code:
$eins = new Test();
$eins->__destruct;
// Ausgabe:
// "test.txt" wurde erstellt!
// Destruct wird ausgeführt
// Destruct wird ausgeführt
Variante 3:
PHP-Code:
$eins = new Test();
$eins = NULL;
unset($eins);
// Ausgabe:
// "test.txt" wurde erstellt
// Destruct wird ausgeführt
Aber ich will die Klasse mit einem $eins->close(); oder $eins->__destruct(); beenden.
Aber ich bekomme das oben gezeigte verhalten das der destructor teilweise doppelt ausgeführt wird, wieso?!?!
Kommentar