Re: extended objects with read_property and get_property_ptr_ptr

From: Date: Tue, 06 Jul 2004 18:44:01 +0000
Subject: Re: extended objects with read_property and get_property_ptr_ptr
References: 1  Groups: php.internals 
Request: Send a blank email to internals+get-10932@lists.php.net to get a copy of this message
Hello Rob, Tuesday, July 6, 2004, 12:15:31 PM, you wrote: > I was playing around with Bug #28817 and seem to have run into an issue > when overriding the read_property handler with an extended object (this > case a DomDocument object). > In order to support standard properties correctly, such as > $obj->myprop['a'] = 'b', the internal object needs to support > get_property_ptr_ptr. As the internal object here overrides the > read_property handler, it would also need to override the > get_property_ptr_ptr handler to make that standard property work > correctly, which is where I have run into some problems. > At first, I implemented a get_property_ptr_ptr handler, but found that > for the base internal class properties, this method needs to return NULL > so that cases like zend_pre_incdec_property would fall back to the > read_property/write_property handling. Next was to return NULL for all > properties of the base internal class and return the result of the > standard get_property_ptr_ptr for non base class properties. This fixed > the standard properties, but returning NULL for the internal base > properties breaks calls like: > $document->documentElement->ownerDocument; > because zend_fetch_property_address_inner will not fall back to the > read_property handler if NULL is returned get_property_ptr_ptr. > Rather the error "Cannot access undefined property for object with > overloaded property access" is returned. > Is this is a pitfall of the engine or is there something I am > overlooking which would allow this to work across all cases? Sounds more like small oversight. Could you try to make a patch for that? Best regards, Marcus mailto:helly@php.net

« previous php.internals (#10932) next »