Maison > Article > développement back-end > qu'est-ce qu'un destructeur en php
Destructeur
__destruct ( void ) : void
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'
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(){ //函数体 //析构函数的重要作用,就是释放对象创建的资源 //比如 数据库连接,文件句柄,绘图句柄。。。 } }
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(); ?>
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!