Hi, at first, read that bug report : http://bugs.php.net/bug.php?id=42065
I would like to say that it doesn't seem to be fixed as it's said.
When I execute the bug 42065 test case, it still fails.
In reality, another code brought me to that bug, please consider this :
<?php
class a
{
public $array = array('key'=>'2');
public function getArray()
{
return $this->array;
}
}
$a = new a;
$tab = $a->getArray();
$tab['key'] = 5;
print_r($a);
print_r($tab);
Outputs :
a Object
(
[array] => Array
(
[key] => 2
)
)
Array
(
[key] => 5
)
No problem, that's expected.
Now consider that :
$a = new a;
$tab = new ArrayObject($a->getArray());
$tab['key'] = 5;
print_r($a);
print_r($tab);
Outputs :
a Object
(
[array] => Array
(
[key] => 5
)
)
ArrayObject Object
(
[key] => 5
)
So, the original array, inside the 'a' object has been modified, but it
souldn't have.
This behavior is like the one described in bug 42065
Plateform : Windows
PHP : latest 5.2 snapshot - Apache SAPI.
If you really want the original array not to be modified, you should act
like this :
$tab = new ArrayObject((array)$a->getArray());
Strange isn't it ?