Re: Custom object creation and reference counts

From: Date: Sat, 03 Jan 2004 00:28:42 +0000
Subject: Re: Custom object creation and reference counts
References: 1 2  Groups: php.internals 
Request: Send a blank email to internals+get-6752@lists.php.net to get a copy of this message
On Fri, Jan 02, 2004 at 04:09:21PM -0800, Andrei Zmievski wrote: > > Why is my object being treated as a reference while the native PHP > > object is not? > > I guess that is a question for you really: are you doing anything > special to make your object a reference? I've used the new object model > for PHP-GTK and my objects were not treated as references. It appears to be a side-effect of not defining the 'scope' field in the zend_internal_function call that is invokved from my custom 'constructor_get' handler. If the 'scope' field is NULL, my object is treated as a reference. If I assign my class entry to the 'scope' field, the object is "normal" (i.e. not a reference). > > 'variable_ptr->refcount=1;' resets the reference count of the > > variable's zval to 1, but the underlying _store_object's reference > > count is still incremented. What will ever reclaim that reference on > > the _store_object? > > zval_dtor() will. It calls del_ref on the underlying object. I see. I would have to call zval_dtor() myself in any of the cases where I knowingly created an additional reference. That makes sense. -- Jon Parise (jon@php.net) :: The PHP Project (http://www.php.net/)

« previous php.internals (#6752) next »