Maison  >  Article  >  développement back-end  >  Quel est le nom de la méthode du destructeur php

Quel est le nom de la méthode du destructeur php

青灯夜游
青灯夜游original
2023-03-02 19:11:083186parcourir

Le nom de la méthode destructeur PHP est "__destruct()" et ne peut avoir aucun paramètre. La méthode destructrice "__destruct()" sera automatiquement appelée uniquement avant que l'objet ne soit collecté par le garbage collector (c'est-à-dire avant que l'objet ne soit supprimé de la mémoire). Elle vous permet d'effectuer certaines opérations spécifiques avant de détruire un objet, comme par exemple ; fermer le fichier, libérer l'ensemble de résultats, etc.

Quel est le nom de la méthode du destructeur php

L'environnement d'exploitation de ce tutoriel : système Windows 7, version PHP 8, ordinateur DELL G3

Le nom de la méthode du destructeur php est "__destruct()" et ne peut avoir aucun paramètre.

PHP __destruct() : destructeur/méthode

Le rôle du destructeur est exactement l'opposé de celui du constructeur. Le destructeur ne fonctionne qu'avant que l'objet ne soit collecté par le garbage collector (c'est-à-dire avant l'objet). est supprimé de la mémoire) sera automatiquement appelé. Les destructeurs nous permettent d'effectuer certaines opérations avant de détruire un objet, comme fermer des fichiers, publier des jeux de résultats, etc.

Il existe un mécanisme de récupération de place en PHP. Lorsqu'un objet n'est pas accessible, le mécanisme de récupération de place démarre automatiquement pour récupérer l'espace mémoire occupé par l'objet. Le destructeur est appelé avant que l'objet ne soit recyclé par le mécanisme de garbage collection.

Le format de déclaration du destructeur est similaire à celui du constructeur. Le nom du destructeur déclaré dans la classe est également fixe. Il commence également par deux traits de soulignement dans le nom de la méthode __destruct(), et le destructeur ne peut avoir aucun paramètre. . Le format pour déclarer une méthode destructeur dans une classe est le suivant :

public function __destruct(){
    ... ...
}

Le destructeur n'est pas très couramment utilisé en PHP. C'est une partie facultative de la classe et n'est déclaré dans la classe qu'en cas de besoin.

【Exemple】Ce qui suit utilise un exemple pour démontrer l'utilisation du destructeur.

<?php
    class Website{
        public $name, $url, $title;
        public function __construct(){
            echo &#39;------这里是构造函数------<br>&#39;;
        }
        public function __destruct(){
            echo &#39;------这里是析构函数------<br>&#39;;
        }
    }
    $object = new Website();
    echo &#39;PHP中文网<br>&#39;;
    echo &#39;https://www.php.cn/<br>&#39;;
    echo &#39;脚本运行结束之前会调用对象的析构函数<br>&#39;;
?>

Les résultats d'exécution sont les suivants :

Quel est le nom de la méthode du destructeur php

Le destructeur sera exécuté lorsque toutes les références à un objet sont supprimées ou lorsque l'objet est explicitement détruit

Est-il exécuté avant que l'objet ne soit détruit ?

Selon le manuel officiel, le destructeur sera exécuté lorsque toutes les références à un objet seront supprimées ou lorsque l'objet sera explicitement détruit. La démonstration du code est la suivante

class sf{    public function destruct()
    {        echo METHOD . PHP_EOL;
    }
}
 
 
$c1 = new sf;
$c2 = $c1;echo &#39;unset $c2&#39; . PHP_EOL;unset($c2);echo &#39;unset $c1&#39; . PHP_EOL;unset($c1);// ----$c1 = new sf;
$c2 = $c1;echo &#39;null $c2&#39; . PHP_EOL;
$c2 = null;echo &#39;null $c1&#39; . PHP_EOL;
$c1 = null;// ----$c1 = new sf;
$c2 = $c1;echo &#39;123 $c2&#39; . PHP_EOL;
$c2 = 123;echo &#39;456 $c1&#39; . PHP_EOL;
$c1 = 456;echo &#39;the end&#39; . PHP_EOL;

Les résultats d'exécution sont les suivants

Quel est le nom de la méthode du destructeur php

Le destructeur sera exécuté lorsque toutes les références à un objet sont supprimées ou lorsque l'objet est explicitement détruit.

Normalement parlant, php détruira la référence à la fin du script (non défini) et s'exécutera avant la fin du script.

Apprentissage recommandé : "Tutoriel vidéo PHP"

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