Maison  >  Article  >  développement back-end  >  Analyse détaillée du destructeur et du garbage collection en php

Analyse détaillée du destructeur et du garbage collection en php

黄舟
黄舟original
2017-07-02 10:11:401143parcourir

Destructeur : Exécuté lorsqu'un objet devient un déchet ou lorsque l'objet est explicitement détruit.

GC (Garbage Collector)

En PHP, lorsqu'il n'y a pas de variable pointant vers cet objet, l'objet devient un déchet. PHP le détruira en mémoire. Il s'agit du mécanisme d'élimination des déchets GC (Garbage Collector) de PHP pour éviter les débordements de mémoire. Lorsqu'un thread PHP se termine, tout l'espace mémoire actuellement occupé sera détruit et tous les objets du programme en cours seront également détruits.

Le destructeur destruct() est exécuté lorsque l'objet poubelle est recyclé.

Le destructeur peut également être appelé explicitement, mais ne le faites pas.

Le destructeur est automatiquement appelé par le système. N'appelez pas le destructeur d'un objet dans le programme.

Le destructeur ne peut pas prendre de paramètres.

Tous les objets sont détruits avant la fin du programme. Le destructeur est appelé.

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

Lorsque l'objet n'est pas pointé, l'objet est détruit.

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

Nous définissons $p pour qu'il soit vide ou attribuons à $p une chaîne à la ligne 11, afin que l'objet pointé par $p devienne un objet poubelle. PHP supprime cet objet.

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 "我们看到这里,析构函数被执行了";    
    ?>


Lors de la désactivation d'une variable de référence, unset détruit la variable pointant vers l'objet, pas l'objet.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn