Destructeur... - PHP - Programmation
Marsh Posté le 17-03-2009 à 16:53:55
Le destructeur php n'a à ma connaissance aucune utilité.
Marsh Posté le 17-03-2009 à 18:31:22
skeye a écrit : Le destructeur php n'a à ma connaissance aucune utilité. |
J'ai lu dans un bouquin que c'était bien pour "fermer" des fichiers/connexions sql.
Sauf que j'ai jamais de ressources propre à une classe. Donc, oui, je ne vois pas non plus d'utilité à destruct
Marsh Posté le 17-03-2009 à 18:33:12
skeye a écrit : Le destructeur php n'a à ma connaissance aucune utilité. |
Fermer les ressources non GC'd qui vont potentiellement leaker (je sais pas si PHP ferme automagiquement tous ses fichiers à la fin d'un script par exemple, ou toutes ses connections SQL) comme dans tous les languages avec GC
Marsh Posté le 17-03-2009 à 18:45:19
masklinn a écrit : |
il est censé le faire tout seul. Bon après c'est php, hein...
Marsh Posté le 17-03-2009 à 18:53:48
skeye a écrit : |
Qu'il ferme les fichiers est probable remarque, par contre les connections SQL il ferme probablement les connections TCP mais pas nécessairement correctement, ça peut faire leaker des handlers au niveau du serveur même (me semble avoir vu ça, à vérifier)
Marsh Posté le 19-03-2009 à 10:09:03
masklinn a écrit :
|
Pour fermer la connexion à la base de données, voici comment j'opère avec le desctructeur :
Code :
|
Marsh Posté le 19-03-2009 à 12:18:11
J'espère que tu testes si la connexion est ouverte avant de la fermer, sinon tu risques d'avoir un message d'erreur idiot.
Marsh Posté le 19-03-2009 à 19:34:12
skeye a écrit : J'espère que tu testes si la connexion est ouverte avant de la fermer, sinon tu risques d'avoir un message d'erreur idiot.:D |
Vi vi !
Marsh Posté le 19-03-2009 à 23:04:48
Je l'ai utilisé dans une classe utilisant cURL : je supprimais le cookie automatiquement par ce biais.
d'ailleurs, il est amusant de voir qu'on ne peut pas attraper les exceptions levées par des destructeurs (ou alors je m'y suis pris comme un manche)
Marsh Posté le 20-03-2009 à 07:49:39
PunkRod a écrit : d'ailleurs, il est amusant de voir qu'on ne peut pas attraper les exceptions levées par des destructeurs (ou alors je m'y suis pris comme un manche) |
J'ai jamais trouvé amusant d'être surpris par quelque chose qui est indiqué clairement dans la doc
http://www.php.net/manual/en/language.oop5.decon.php
Citation : Note: Attempting to throw an exception from a destructor (called in the time of script termination) causes a fatal error. |
Marsh Posté le 17-08-2009 à 00:00:26
Le destructeur est également pratique avec une calss utilisant la bibliothèque GD, qui fait souvent appel à la fonction imagedestroy().
Exemple:
Code :
|
Marsh Posté le 17-08-2009 à 13:13:00
d'autant plus qu'une connexion classique mysql, se ferme automatiquement
Marsh Posté le 17-03-2009 à 14:26:11
Bonjour à tous,
Une petite question concernant le destructeur ( __destruct() ) d'une classe en PHP5.
Est-il obligé de supprimer les attributs de la classe dans le destructeur ou est-ce que le simple fait que l'objet soit détruit, soit par unset(), soit à la fin du script suffise pour qu'il libère, de lui-même, les données stockées dans ses propriétés lorsqu'il exécute le destructeur ?
Est-on obligé d'écrire ceci :
Merci d'avance pour vos réponses !
Lionel.
---------------
On dit que les gens veulent du travail, mais c'est faux ! Etre payé leur suffirait !