Maison > développement back-end > Problème PHP > qu'est-ce qu'un destructeur en php

qu'est-ce qu'un destructeur en php

(*-*)浩
Libérer: 2023-02-23 18:42:01
original
3086 Les gens l'ont consulté

qu'est-ce qu'un destructeur en php

Destructeur

__destruct ( void ) : void
Copier après la connexion

PHP 5 a introduit le concept de destructeur, qui est similaire à d'autres langages orientés objet tels que C++. . Un destructeur est exécuté lorsque toutes les références à un objet sont supprimées ou lorsque l'objet est explicitement détruit.

Le destructeur sera exécuté lorsque toutes les références à un objet seront supprimées (qu'elles soient explicitement détruites ou implicitement détruites) ou lorsque le fichier php sera exécuté.

Toutes les références à un objet sont supprimées : (Apprentissage recommandé : Programmation PHP du débutant à compétent)

、使用unset(对象名),将对象名销毁
2、$对象名 = null
3、$对象名 = 'abc'
Copier après la connexion

Destruction explicite :

Les trois méthodes écrites ci-dessus sont toutes des destructions explicites. La destruction dite explicite signifie que le programmeur supprime activement la référence de l'objet.

Si le programmeur ne détruit pas explicitement l'objet, une fois l'exécution du programme terminée, l'objet sera détruit par le système. Aussi appelée destruction implicite.

Syntaxe de base :

class 类名{
    public function __destruct(){
    //函数体
    //析构函数的重要作用,就是释放对象创建的资源
    //比如 数据库连接,文件句柄,绘图句柄。。。
    }
}
Copier après la connexion

Explication :

(1) Les destructeurs sont tous publics

(2) __destruct est un mot-clé, ne le modifiez pas

(3) Le destructeur n'a pas de paramètres formels

(4) Le destructeur est appelé par le système

( 5 ) Le destructeur sera appelé par le système dans les situations suivantes :

Le fichier PHP est exécuté

Lorsque toutes les références à un objet sont supprimées ou lorsque l'objet est explicitement détruit.

<?php
class MyDestructableClass {
   function __construct() {
       print "In constructor\n";
       $this->name = "MyDestructableClass";
   }

   function __destruct() {
       print "Destroying " . $this->name . "\n";
   }
}

$obj = new MyDestructableClass();
?>
Copier après la connexion

Comme le constructeur, le destructeur de la classe parent ne sera pas appelé secrètement par le moteur. Pour exécuter le destructeur de la classe parent, parent::__destruct() doit être explicitement appelé dans le corps du destructeur de la classe enfant. De plus, tout comme le constructeur, la sous-classe héritera de la classe parent si elle ne définit pas de destructeur.

Le destructeur est appelé même lorsque le script est terminé à l'aide de exit(). L’appel de exit() dans le destructeur annulera les opérations d’arrêt restantes.

Remarque :

Le destructeur est appelé à la fermeture du script, après que tous les en-têtes HTTP ont été envoyés. Il est possible que le répertoire de travail lorsque le script est fermé soit différent de celui lorsqu'il se trouve dans un SAPI (comme Apache).

Remarque :

Tenter de lancer une exception dans le destructeur (qui est appelé à la fin du script) entraînera une erreur fatale.

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