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

 ID:                 53277
 Comment by:         php dot net at site dot lanzz dot org
 Reported by:        php dot net at site dot lanzz dot org
 Summary:            Setting previously undefined property on an
                     ArrayObject triggers weird error
 Status:             Open
 Type:               Bug
 Package:            *Programming Data Structures
 Operating System:   Linux
 PHP Version:        5.2.14
 Block user comment: N

 New Comment:

Oops, first row should read "error_reporting(E_ALL | E_STRICT)", the
notice is not 

visible as it is now.


Previous Comments:
------------------------------------------------------------------------
[2010-11-09 12:29:18] php dot net at site dot lanzz dot org

Description:
------------
When assigning a reference to a previously undefined property of an
ArrayObject, 

E_NOTICE is thrown on the assignment itself, and every time that
property is 

accessed after that. Despite the "undefined index" complaints, the code
works as 

expected — $b->test[] = "foo" successfully assigns "foo" to $a[0].



This issue does not occur with assignment by value — no notices are
displayed 

(though the code no longer works as intended, as $a[0] remains
undefined). It also 

does not occur if $b->test is initialized prior to the assignment by
reference 

(e.g. adding a "$b->test = true" row before the assignment) — in this
case the 

assignment by reference also works as intended, and does not emit
E_NOTICE.

Test script:
---------------
error_reporting(E_ALL & E_STRICT);

ini_set('display_errors', 1);



$a = array();

$b = new ArrayObject(array(), ArrayObject::ARRAY_AS_PROPS);

$b->test = &$a;

$b->test[] = "foo";

print($a[0]);

Expected result:
----------------
Script should run without notices.

Actual result:
--------------
Script throws "Undefined index: test" notices every time $b->test is
referenced, 

even though everything works correctly otherwise.


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



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

Reply via email to