Problem mit dem PHP-Destruktor?

黄舟
Freigeben: 2023-03-12 10:56:01
Original
1449 Leute haben es durchsucht

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);
Nach dem Login kopieren

======================= =
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

Einzelfallmodus

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

statischen

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

Singleton, was bedeutet, dass Sie nur dieselbe Instanz betreiben können. Es bedarf zu vieler Worte, um darüber zu sprechen. Da Sie den Singleton-Modus kennen, gehen Sie einfach zu dessen Beschreibung.
class singleDemo {
    protected static $instance = false;

    protected construct() {    
    }

    public static function getInstance() {

        if (! self::$instance instanceof self) {
            self::$instance = new self();
        }
        return self::$instance;

    }

}
Nach dem Login kopieren


Der Destruktor ist der Code, der aufgerufen wird, wenn das Objekt zerstört wird.

Wenn dieses Objekt aufgebraucht ist, werden die Anweisungen in dieser Funktion automatisch ausgeführt.

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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage