Edit report at http://bugs.php.net/bug.php?id=53277&edit=1
ID: 53277 Updated by: [email protected] Reported by: php dot net at site dot lanzz dot org Summary: Setting previously undefined property on an ArrayObject triggers weird error -Status: Open +Status: Wont fix Type: Bug Package: *Programming Data Structures Operating System: Linux PHP Version: 5.2.14 Block user comment: N New Comment: This bug isn't present in PHP 5.3 and trunk, only PHP 5.2 As PHP 5.2 is only receiving security fixes, I'm closing as WONT FIX. Previous Comments: ------------------------------------------------------------------------ [2010-11-09 13:09:26] php dot net at site dot lanzz dot org Oops, first row should read "error_reporting(E_ALL | E_STRICT)", the notice is not visible as it is now. ------------------------------------------------------------------------ [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
