Heim >Backend-Entwicklung >PHP-Tutorial >Problem mit dem PHP-Destruktor?
Bitte erzählen Sie mir etwas über das Problem des PHP-Destruktors
<?php class a{ static $ss=null; function ff($p){ self::$ss=$p; return self::$ss; } function destruct(){ echo "一二三"; } } $rrrr=new a(); echo $rrrr->ff(4444); $aaaa=new a(); echo $aaaa->ff(55555);
======================= =
Ausgabeergebnis: 444455555 eins zwei drei eins zwei drei
========================
Was ich will Die Frage lautet: Wird der Destruktor nicht ausgeführt, nachdem das Objekt $rrrr ausgeführt wurde, hätte das Objekt $rrrr zerstört werden sollen, wenn $aaaa ausgeführt wurde. one“ des Destruktors sollte ausgegeben werden. „Two three“ Aber das Ergebnis, das wir sehen, ist 444455555 one two three one two three. Ich denke, das Ergebnis sollte 4444 one two three 55555 one two three sein. Das ist richtig So ist es nicht. unset($rrrr) kann eine Objektzerstörung auslösen, new a() jedoch nicht. Sie haben gerade zwei Instanzen von a erhalten und keine Zerstörung durchgeführt.
Nachdem der Seitenbesuch beendet ist, zerstört PHP automatisch die Instanzen $rrrr und $aaaa, sodass eins, zwei und drei zweimal hintereinander ausgegeben werden.
Danke, aber das ist
static $ss Wenn diese Klassenvariable neu zugewiesen wird, wird dann nicht die vorherige zerstört?
Sehr geehrte Damen und Herren, Ihr Modus ist kein Singleton-Modus ... es ist nur ein gewöhnliches Objekt mit
Attributen, und selbst wenn es ein Singleton-Modus ist, wird kein Destruktor verwendet. Beim Erlernen des Programms muss man sehr vorsichtig sein, da Details so wichtig sind. Dies ist ein Singleton
class singleDemo { protected static $instance = false; protected construct() { } public static function getInstance() { if (! self::$instance instanceof self) { self::$instance = new self(); } return self::$instance; } }
Der Destruktor ist der Code, der aufgerufen wird, wenn das Objekt zerstört wird.
Ihr Objekt wurde nicht für die gesamte Datei aufgebraucht. Es wird erst nach der Ausgabe von 55555 aufgebraucht. Da es zweimal aufgerufen wird, gibt es am Ende zwei eins, zwei und drei! Ich hoffe, adoptiert zu werden!
Das obige ist der detaillierte Inhalt vonProblem mit dem PHP-Destruktor?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!