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

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

黄舟
Libérer: 2023-03-12 10:36:01
original
1233 Les gens l'ont consulté

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程序结束前,对象被销毁了。    
    ?>
Copier après la connexion

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";    
    }    
    ?>
Copier après la connexion

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


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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal