#32913 [Opn->Fbk]: properties via __get and __set methods in one expression won't work
| From: | tony2001@php.net | Date: | Thu, 05 May 2005 18:24:15 +0000 |
| Subject: | #32913 [Opn->Fbk]: properties via __get and __set methods in one expression won't work | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-78668@lists.php.net to get a copy of this message | ||
ID: 32913
Updated by: tony2001@php.net
Reported By: marius at distance dot ktu dot lt
-Status: Open
+Status: Feedback
Bug Type: Class/Object related
Operating System: Linux
PHP Version: 5.0.3
New Comment:
Please try using this CVS snapshot:
http://snaps.php.net/php5-STABLE-latest.tar.gz
For Windows:
http://snaps.php.net/win32/php5.0-win32-latest.zip
Can't reproduce with latest 5.0 & HEAD CVS.
Previous Comments:
------------------------------------------------------------------------
[2005-05-02 14:11:22] marius at distance dot ktu dot lt
Description:
------------
Note: you might say this is a duplicate of #28444, but i don't think
it's not a bug so please read carefully what i've written before doing
that and if you say it's a duplicate, please explain specificaly why...
thanks.
---
when i traverse object tree with overloaded properties, i can't assign
a value to complex properties (i.e. $a->b->c). i don't see why this
should be a problem for php...
I don't get why do you say it's not a bug? Consider my reproduce code.
why do the first and second property accessors work and the third
(final) one does not?
as i understand the final statement ($a->a->a = "";) should do:
$a->__get("a")->__set("a", "");
so what's wrong with that? no recursive __get or __set, everything
should work by specification... or am i wrong? if so, where?
Reproduce code:
---------------
<?php
class A
{
function __get($name)
{
return new A();
}
function __set($name, $value)
{
}
}
$a= new A();
$a->a->a; // only __get = ok
$a->a = ""; // only __set = ok
$a->a->a = ""; // __get and __set = error
?>
Expected result:
----------------
the code should work ok.
Actual result:
--------------
Fatal error: Cannot access undefined property for object with
overloaded property access in test.php on line 15
this error only happens if php would need to call __get and __set of
some classes (sequentially not recursively) to resolve one (lhs)
expression.
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=32913&edit=1