Suicider un objet ? - PHP - Programmation
Marsh Posté le 25-03-2008 à 23:37:16
Sa durée de vie n'excède pas le chargement de ta page de toutes façons, sauf si tu le garde en session, cookie, ... tu n'as qu'a le détruire si c'est le cas.
Marsh Posté le 26-03-2008 à 09:10:46
art_dupond a écrit : youp, |
C'est le rôle du garbage collector
Marsh Posté le 26-03-2008 à 11:18:59
masklinn a écrit : C'est le rôle du garbage collector |
Voilà. Et y'a même la gestion des destructeurs
Genre :
Code :
|
Marsh Posté le 26-03-2008 à 11:59:36
FlorentG a écrit :
|
Garbage collector, en gros en français c'est la benne à ordures
Marsh Posté le 26-03-2008 à 12:02:25
FlorentG a écrit :
|
Ouais mais ça c'est quasiment jamais utile, en java il est même déconseillé de l'utiliser. Pareil en Python d'ailleurs, parce que ça interdit au détecteur de cycle de tourner correctement
Marsh Posté le 26-03-2008 à 12:32:13
Fused a écrit : Sa durée de vie n'excède pas le chargement de ta page de toutes façons, sauf si tu le garde en session, cookie, ... tu n'as qu'a le détruire si c'est le cas. |
Oui l'objet est en session.
En fait, l'objet se crée sur une page "particulière", vit le temps de quelques pages (en fonction d'un paramètre $ttl qui diminue à chaque changement de page) et est détruit quand ($ttl == 0)
Pour l'instant, sur chaque page, je fais
Code :
|
et j'aimerais pouvoir faire (oui ça ne change pas grand chose, mais c'est aussi pour apprendre )
Code :
|
C'est faisable avec le gc ça ? Je pensais que le gc était un "truc automatique" (mais bon, je connais pas bien )
ps: j'ai bien essayé avec __destruct, mais si j'ai bien compris, c'est juste une fonction qui est appelée quand on unset l'objet ()
pps: pour le gc, j'aurais besoin d'un peu d'aide si c'est faisable avec, je ne trouve rien de concret pour mon truc
Marsh Posté le 26-03-2008 à 13:33:23
En principe tu fais un truc du style :
$objet->__destruct();
$objet = null;
Marsh Posté le 26-03-2008 à 13:37:09
CyberDenix a écrit : En principe tu fais un truc du style : |
sûrement pas.
Citation : The destructor method will be called as soon as all references to a particular object are removed or when the object is explicitly destroyed or in any order in shutdown sequence. |
http://fr2.php.net/manual/en/language.oop5.decon.php
Le destructeur est appelé automatiquement quand le GC dégage l'objet, e.g. après l'unset.
Mais dans tous les cas, ça ne permet pas de faire ce que art_dupond demande, qui n'est pas possible.
Marsh Posté le 26-03-2008 à 14:27:39
masklinn a écrit : Le destructeur est appelé automatiquement quand le GC dégage l'objet, e.g. après l'unset. |
Et à cause du GC de type refcount, ça ne sert même pas en cas de références circulaires
Code :
|
Donne
Code :
|
Donc unset ne fait déréférencer la variable que dans le scope local
Marsh Posté le 26-03-2008 à 14:39:39
FlorentG a écrit :
|
heuuu...
encore heureux, unset ça dégage la référence qu'on lui demande de dégager, pas une autre au pif comme ça tac tac, même pour PHP ça atteindrait des sommets d'imbécilité
Marsh Posté le 26-03-2008 à 15:04:01
masklinn a écrit : |
C'était du point de vue de ce que t'as dis : le GC qui appelle le destructeur après un unset.
Marsh Posté le 25-03-2008 à 21:46:33
youp,
est-ce possible de faire se suicider un objet en php ?
Le but est que si mon objet n'est plus utile, il le sait de lui même et s'auto unset.
Marchi
---------------
oui oui