Maison >développement back-end >tutoriel php >Explication détaillée de l'utilisation du destructeur php
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('path', 'a'); } 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!