Edit report at http://bugs.php.net/bug.php?id=53931&edit=1

 ID:                 53931
 Updated by:         cataphr...@php.net
 Reported by:        mark dot rhoads at rightnow dot com
 Summary:            read_property not invoked on write thru a nested
                     object
-Status:             Open
+Status:             Feedback
 Type:               Bug
 Package:            Class/Object related
 Operating System:   *nix
 PHP Version:        5.3.5
 Block user comment: N
 Private report:     N



Previous Comments:
------------------------------------------------------------------------
[2011-02-05 03:39:54] cataphr...@php.net

Can you give an example with which to reproduce this?



This really looks like a bug on your part, namely failing to adapt
get_property_ptr_ptr. See
http://wiki.php.net/internals/engine/objects#get_property_ptr_ptr

------------------------------------------------------------------------
[2011-02-04 22:06:12] mark dot rhoads at rightnow dot com

Description:
------------
I have a custom object implementation with its own read_property and
write_property handlers where some properties are also objects.

Attemptying to write a property within the nested object when the nested
object has not been previously accessed via read_property will cause a
stdClass object to be invented and assigned to the property instead of
calling read_property to get the underlying object.



If the the first access is a write to a property of a nested object,
then read_property is not called for the nested object and a stdClass
object is invented and assigned:

$obj->nestedObject->someProperty = someValue;

assert( 'stdClass' == get_class( $obj->nestedObject ) );



However, if the first access is a read then it all works fine:

$someValue = $obj->nestedObject->someProperty; // read_property is
called for nestedObject

$obj->nestedObject->someProperty = someValue; // and now the write
works



First performing any kind of read access allows this to work just fine.

E.g. this works

$obj->nestedObject;

$obj->nestedObject->someProperty = someValue;



Or this:

$avalue = $obj->nestedObject->someProperty;  // calls read_property on
nestedObject

$obj->nestedObject->someProperty = someValue;



The problem only occurs when the very first access is a write to a
properpty of the nested property.





------------------------------------------------------------------------



-- 
Edit this bug report at http://bugs.php.net/bug.php?id=53931&edit=1

Reply via email to