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

 ID:                 52540
 Updated by:         johan...@php.net
 Reported by:        trong at ngs dot ru
 Summary:            Error on update array's field through __set magic
                     method
-Status:             Open
+Status:             Bogus
 Type:               Bug
 Package:            Class/Object related
 Operating System:   Windows XP
 PHP Version:        5.3.3
 Block user comment: N

 New Comment:

Thank you for taking the time to write to us, but this is not
a bug. Please double-check the documentation available at
http://www.php.net/manual/ and the instructions on how to report
a bug at http://bugs.php.net/how-to-report.php

When using the array as storage the __get() method will return a copy of
the array. When using ArrayObject it will return a handle to the object.
So with an array you're working on a copy, with objects on the same
object.



For objet handles check
http://www.php.net/manual/en/language.oop5.references.php


Previous Comments:
------------------------------------------------------------------------
[2010-08-05 09:43:33] trong at ngs dot ru

Description:
------------
If I use __set magic method for arrays and try to update some field of
array I see 

the old value. But, if I use the same scheme for ArrayObject I'll get
the right 

result.

Test script:
---------------
<?

class t

{

        private $data = array();



        public function __get($name) {

                return $this->data[$name];

        }

        

        public function __set($name, $value) {

                $this->data[$name] = $value;

        }

}



// define test array

$array = array( 'view' => array('x' => 1, 'y' => 1) );



$t = new t();

$t->mas = $array;



// update field of array

$t->mas['view']['x'] = 1111;

echo $t->mas['view']['x'];



echo '<br>';



$t->mas2 = new ArrayObject($array);

$t->mas2['view']['x'] = 1111;

echo $t->mas2['view']['x'];



?>

Expected result:
----------------
1111

<br>

1111

Actual result:
--------------
1

<br>

1111


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



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

Reply via email to