Existe-t-il un moyen en PHP de détruire un objet à l'intérieur de ce même objet?PHP: Détruire un objet de l'intérieur de l'objet?
Répondre
Il est un moyen de Autodestruction un objet:
Utilisez le tableau $GLOBALS
pour trouver votre exemple en elle, puis utilisez unset()
. Sachez que unset()
ne pas appeler automatiquement la __destruct()
méthode magique tout le temps ...
Il y a une telle note de cette manière (voir la documentation unset()
) dans la documentation PHP, mais il ne précise pas exactement quand unset()
-t n'appelle pas la méthode __destruct()
.
Et j'ai eu ce comportement spécifique:
Je fais:
unset($myInstance);
$myInstance = clone $otherInstance;
Et le __constructor
est appelé d'abord, puis le __destruct()
. Ou je voudrais que le __destruct()
soit appelé d'abord parce que unset()
est avant le clonage ... Je suis coincé avec ça maintenant ...
Nicolas.
Non, je ne pense pas qu'il y en ait. Mais auriez-vous besoin d'une telle chose?
Eh bien, pourquoi pas? Si vous créez un objet, on pourrait supposer qu'il devrait être capable de le détruire. – Christian
@Christian la capacité de détruire un objet leis dans le même endroit où la capacité de les créer - pas à l'intérieur de l'objet lui-même. –
Si une méthode est appelée dans le contexte de l'objet, il doit y avoir au moins une référence à cet objet. Et puisque php supprime uniquement les objets inaccessibles, la réponse est: non.
a donné une réponse «oui-et-c'est-comme-comment» à une question essentiellement similaire ici - http://stackoverflow.com/a/21367011/1537018 –