ID:               25124
 User updated by:  ian at ardes dot com
 Reported By:      ian at ardes dot com
 Status:           Open
 Bug Type:         Class/Object related
 Operating System: OS X 10.2.6
 PHP Version:      4.3.3RC3
 New Comment:

Also in 4.3.3RC4


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

[2003-08-18 02:34:02] ian at ardes dot com

Description:
------------
Summary: When a class is overloaded with overload(), 
array member variables go wrong.

If you overload a class, then access to declared array 
member variables from within member functions (and 
anywhere else I think) stops working correctly.

The very simple class in the code should not change 
it's behaviour at all once it is overloaded.  But it 
does.

Reproduce code:
---------------
class Overloaded {
    var $_my_array = array();
    
    function Overloaded() {
        $this->_my_array[1] = '1st element';
    }
    
    function __get($nm, &$val) {
        return false;
    }
    
    function __set($nm, $val) {
        return false;
    }
}

$o1 = new Overloaded();
print ("before overload(): "); print_r($o1);

overload('Overloaded');

$o2 = new Overloaded();
print ("after overload():  "); print_r($o2);

Expected result:
----------------
before overload(): overloaded Object
(
    [_my_array] => Array
        (
            [1] => 1st element
        )

)
after overload(): overloaded Object
(
    [_my_array] => Array
        (
            [1] => 1st element
        )

)

Actual result:
--------------
before overload(): overloaded Object
(
    [_my_array] => Array
        (
            [1] => 1st element
        )

)
after overload():  overloaded Object
(
    [_my_array] => 1st element
)


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


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

Reply via email to