#25124 [Ver->Bgs]: overload() messes with array member variables

From: Date: Tue, 17 Feb 2004 21:37:42 +0000
Subject: #25124 [Ver->Bgs]: overload() messes with array member variables
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-55093@lists.php.net to get a copy of this message
 ID:               25124
 Updated by:       sniper@php.net
 Reported By:      ian at ardes dot com
-Status:           Verified
+Status:           Bogus
 Bug Type:         Class/Object related
 Operating System: *
 PHP Version:      4CVS-2004-02-11
 New Comment:

Expected behaviour -> bogus.



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

[2004-02-17 15:52:56] andrei@php.net

Overloading of array indexes is not supported. This is expected
behavior.

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

[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


Thread (7 messages)

« previous php.bugs (#55093) next »