Heim >Backend-Entwicklung >PHP-Tutorial >Detaillierte Analyse des Destruktors und der Garbage Collection in PHP

Detaillierte Analyse des Destruktors und der Garbage Collection in PHP

黄舟
黄舟Original
2017-07-02 10:11:401206Durchsuche

Destruktor: Wird ausgeführt, wenn ein Objekt zu Müll wird oder wenn das Objekt explizit zerstört wird.

GC (Garbage Collector)

Wenn in PHP keine Variable auf dieses Objekt verweist, wird das Objekt zu Müll. PHP wird es im Speicher zerstören. Dies ist der GC-Müllentsorgungsmechanismus (Garbage Collector) von PHP, um einen Speicherüberlauf zu verhindern. Wenn ein PHP-Thread endet, wird der gesamte aktuell belegte Speicherplatz zerstört und alle Objekte im aktuellen Programm werden ebenfalls zerstört.

destruct() Destruktor wird ausgeführt, wenn das Müllobjekt recycelt wird.

Der Destruktor kann auch explizit aufgerufen werden, tun Sie dies jedoch nicht.

Der Destruktor wird vom System automatisch aufgerufen. Rufen Sie nicht den Destruktor eines Objekts im Programm auf.

Der Destruktor kann keine Parameter annehmen.

Alle Objekte werden zerstört, bevor das Programm endet. Der Destruktor wurde aufgerufen.

     <?php    
    class Person{    
       public function destruct() {    
          echo "<br />析构函数在这里执行";    
          echo "<br />这里一般用来放置,关闭数据库,关闭文件等等收尾工作。";    
       }    
    }    
    $p = new Person();    
    for ($i = 0; $i < 5; $i++) {    
       echo "<br /> $i";    
    }  
    //我们在这里看到,在PHP程序结束前,对象被销毁了。    
    ?>

Wenn nicht auf das Objekt gezeigt wird, wird das Objekt zerstört.

    <?php    
    class Person {    
       public function destruct() {    
          echo "<br />析构函数在这里执行";    
          echo "<br />这里一般用来放置,关闭数据库,关闭文件等等收尾工作。";    
       }    
    }    
    $p = new Person();    
    $p = null;    
    //我们在这里看到,析构函数在这里被执行了。    
    for ($i = 0; $i < 5; $i++) {    
       echo "<br /> $i";    
    }    
    ?>

Wir setzen $p auf leer oder weisen $p in Zeile 11 einen String zu, sodass das Objekt, auf das $p zeigt, zu einem Müllobjekt wird. PHP zerstört dieses Objekt.

Unset-Variable

    <?php    
    class Person {    
       public function destruct() {    
          echo "<br />析构函数在这里执行<br />";    
       }    
    }    
    $p = new Person();    
    $p1 = $p; //设定新引用变量$p1也指向这个对象    
    unset($p);    
    echo "是否看到/$p被销毁,对象也被销毁呢?";    
    for ($i = 0; $i < 5; $i++) {  
       echo "<br /> $i";    
    }    
    unset($p1);    
    echo "我们看到这里,析构函数被执行了";    
    ?>


Wenn Sie eine Referenzvariable deaktivieren, zerstört Unset die Variable, die auf das Objekt zeigt, nicht das Objekt.

Das obige ist der detaillierte Inhalt vonDetaillierte Analyse des Destruktors und der Garbage Collection in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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