Hi, In the Zend Engine I assume each (referenced) variable has some sort of reference counter so that when the last reference is lost the memory is freed up, am I right? If I am has anyone ever suggested or are there any plans to make this available to the php scripts, this goes for the object pointers (or whatever you call them) in the Zend 2 Engine.
This would be extremely useful if you had a object loader which either loaded a object from the database or returned the already loaded object, but cleanup up automatically (if that made any sense). Here is some code to explain: <? // This is Zend Engine 1 Code /* * Object to be loaded */ class MyObject { var $id; var $someParam; } /* * Object loader class */ class ObjectLoader { var $objects = array(); // Example load function function &loadFromDatabase($id) { $res = mysql_query(" select id,someParam from database where id=$id "); $row = mysql_fetch_row($res); $obj = new MyObject; $obj->id = $row[0]; $obj->someParam = $row[1]; return $obj; } function &loadById($id) { // Check if the object is already loaded, if not load it if (!isset($objects[$id])) $this->objects[$id] =& $this->loadFromDatabase($id); // Return the object return $this->objects[$id]; } // Session serialise handler function __sleep() { foreach ($this->objects as $id => $objCpy) [ // Check if this is the last reference to the object if (get_reference_count($this->objects[$id])) { // there are no other references to this object // so it is unused so we can clear up unset($this->objects[$id]); } } } } ?> With this code you could create an object loader and store it in session then load objects from it, (store the references in session if you want), then get as may references to the same objects just by calling koadById() and you could be happy that when you have finished with an object it won't stay in you session causing bloat! Hope you understood that. Obviously if these reference counters don't exist then this has been a wasted post but I think its a nice idea. Cheers Tom -- *************************************************** Tom Oram SCL Computer Services URL http://www.scl.co.uk/ *************************************************** -- PHP Development Mailing List <http://www.php.net/> To unsubscribe, visit: http://www.php.net/unsub.php