Maison  >  Article  >  développement back-end  >  Quand le destructeur php est-il appelé ?

Quand le destructeur php est-il appelé ?

(*-*)浩
(*-*)浩original
2019-09-12 13:25:314387parcourir

Quand le destructeur php est-il appelé ?

Quand le destructeur est-il appelé

Le destructeur est appelé dans les 3 situations suivantes :

Lorsque le cycle de vie de l'objet se termine et est détruit ;

Appelez activement delete ; (Apprentissage recommandé : Programmation PHP de l'entrée à la maîtrise)

L'objet i est en tant que membre de l'objet o, lorsque le destructeur de o est appelé, le destructeur de l'objet i est également appelé.

PHP 5 a introduit le concept de destructeurs, similaire à d'autres langages orientés objet tels que le 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.

<?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 exit() est utilisé pour terminer le script. L’appel de exit() dans le destructeur annulera le reste de l’opération d’arrêt.

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!

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