ID:               25124
 User updated by:  ian at ardes dot com
 Reported By:      ian at ardes dot com
 Status:           Bogus
 Bug Type:         Class/Object related
 Operating System: *
 PHP Version:      4CVS-2004-02-11
 New Comment:

I thought that the overload functiality only applied to 

attributes that were not defined: defined attributes are 

passed over by the magic functions.



The example given is of a *defined* attribute being 

messed up, not an example of attempting to overload with 

array indexes.



If this is expected behavior, then I guess the 

disclaimer should read something like 'You cannot use 

array attributes on a class which is overloaded' rather 

than 'Overloading of array indexes is not supported'.



Thanks.


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

[2004-02-17 16:37:42] [EMAIL PROTECTED]

Expected behaviour -> bogus.



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

[2004-02-17 15:52:56] [EMAIL PROTECTED]

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

Reply via email to