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