ID:               49999
 Updated by:       [email protected]
 Reported By:      christopheb156 at hotmail dot com
-Status:           Open
+Status:           Bogus
 Bug Type:         SPL related
 Operating System: windows xp
 PHP Version:      5.2SVN-2009-10-26 (snap)
 New Comment:

Please do not submit the same bug more than once. An existing
bug report already describes this very problem. Even if you feel
that your issue is somewhat different, the resolution is likely
to be the same. 

Thank you for your interest in PHP.




Previous Comments:
------------------------------------------------------------------------

[2009-10-26 13:45:13] christopheb156 at hotmail dot com

Description:
------------
In test file array_022.phpt we see the clone being changed but this
does not change original, If you clone an ArrayIterator you also clone
its reference.

If you take such a self-wrapping ArrayIterator and clone it, the clone
is no longer self-wrapping: the clone wraps the original. HOWEVER, I
*think* the SPL_ARRAY_IS_SELF flag is being copied to the clone 

Therefore, the clone starts to store/retrieve data from itself rather
than from its wrapped container - hence the difference. 

Reproduce code:
---------------
<?php

class MyArrayIterator extends ArrayIterator
{
        public function __construct()
        {
                parent::__construct($this);
                $this['bar'] = 'baz';
        }
}

$a = new MyArrayIterator;

$b = clone $a;
$b['baz'] = 'Foo';

var_dump($a);
var_dump($b);

?>

Expected result:
----------------
object(MyArrayIterator)#%d (2) {
  ["bar"]=>
  string(3) "baz"
  ["baz"]=>
  string(3) "Foo"
}
object(MyArrayIterator)#%d (2) {
  ["bar"]=>
  string(3) "baz"
  ["baz"]=>
  string(3) "Foo"
}

Actual result:
--------------
object(MyArrayIterator)#%d (1) {
  ["bar"]=>
  string(3) "baz"
}
object(MyArrayIterator)#%d (2) {
  ["bar"]=>
  string(3) "baz"
  ["baz"]=>
  string(3) "Foo"
}


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


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

Reply via email to