Maison >développement back-end >tutoriel php >Explication détaillée de l'utilisation du destructeur php

Explication détaillée de l'utilisation du destructeur php

黄舟
黄舟original
2017-07-02 10:09:062649parcourir

void destruct (void)

PHP 5 a introduit le concept de destructeur, qui est similaire aux autres orientés objet langages, comme 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.

Exemple de destructeur

<?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.

class x
{
 function construct()
 {
  $this->file = fopen(&#39;path&#39;, &#39;a&#39;);
 }
 function destruct()
 {
  fclose($this->file);
 }
}

Pour faire simple, le destructeur est utilisé pour effectuer un travail spécial lorsque l'objet est fermé. Par exemple, dans l'exemple ci-dessus que j'ai écrit, un fichier est ouvert en même temps qu'il est instancié. , mais quand sera-t-il fermé ? Il suffit de le fermer après utilisation, pour que le destructeur le ferme directement

Ou lors de la destruction, nous écrivons une partie des données traitées dans la base de données. Dans ce cas, vous pouvez envisager d'utiliser. le destructeur. Terminé. Avant que la destruction ne soit terminée, ces attributs d'objet existent toujours et ne sont utilisés que pour un accès interne, vous pouvez donc effectuer en toute sécurité tout travail ultérieur lié à l'objet

Le destructeur ne doit pas supprimer celui de l'objet. propre mémoire Release, mais utilisez-le pour guider PHP là où la mémoire qui doit être libérée est lorsque l'utilisateur a besoin de libérer de la mémoire supplémentaire. Enfin, PHP utilise

lors de la destruction. écrivez explicitement des fonctions fictives. .Sauf si vous avez vraiment des ressources qui doivent être libérées
Pour simplement libérer, utilisez ce qui suit
unset(Variable name);
ou $variable name. = NULL;

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