php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #53277 Setting previously undefined property on an ArrayObject triggers weird error
Submitted: 2010-11-09 12:29 UTC Modified: 2010-11-09 13:19 UTC
Votes:1
Avg. Score:3.0 ± 0.0
Reproduced:0 of 0 (0.0%)
From: php dot net at site dot lanzz dot org Assigned:
Status: Wont fix Package: *Programming Data Structures
PHP Version: 5.2.14 OS: Linux
Private report: No CVE-ID: None
Welcome back! If you're the original bug submitter, here's where you can edit the bug or add additional notes.
If this is not your bug, you can add a comment by following this link.
If this is your bug, but you forgot your password, you can retrieve your password here.
Password:
Status:
Package:
Bug Type:
Summary:
From: php dot net at site dot lanzz dot org
New email:
PHP Version: OS:

 

 [2010-11-09 12:29 UTC] 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.

Patches

Add a Patch

Pull Requests

Add a Pull Request

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2010-11-09 13:09 UTC] 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 13:19 UTC] cataphract@php.net
-Status: Open +Status: Wont fix
 [2010-11-09 13:19 UTC] cataphract@php.net
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.
 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Thu Mar 28 13:01:28 2024 UTC