Re: Unset and __destruct

From: Date: Fri, 07 Dec 2012 08:11:04 +0000
Subject: Re: Unset and __destruct
References: 1  Groups: php.general 
Request: Send a blank email to php-general+get-319808@lists.php.net to get a copy of this message
2012/12/6 Pierre du Plessis <pierre@pcservice.co.za> > Hi all > > I searched the internet (probably not hard enough), and couldn't find a > decent answer. > > I was wondering why, when calling unset on an object, it doesn't > automatically call the __destruct method (if it exists) on the object. > Thats because it was never intended :) The engine calls __destruct() right before the GC frees the object, but unset() only decrease the refcount. The next time the GC runs it will call the destructor and everythings fine > > When unsetting an object, php doesn't automatically remove references to > other objects, and you need to manually call the __destruct method where > you can remove any references to other objects. > Why? When the GC removes the object from the memory (which might be slightly later) it also removes the references to associated objects and when their refcount reaches 0 they will get removed as well. Whats the problem? > > I know there is a lot of discussion around this topic, but couldn't find a > definate answer as to why this isn't the default behaviour. > Why should it? Thats the way a GC works :? > > Any clarification would greatly be appreciated. > -- github.com/KingCrunch

« previous php.general (#319808) next »