Re: PHP 5.2-dev "Cannot use array returned from foo::__get('bar') in write context"
| From: | Marcus Boerger | Date: | Wed, 19 Jul 2006 19:35:17 +0000 |
| Subject: | Re: PHP 5.2-dev "Cannot use array returned from foo::__get('bar') in write context" | ||
| References: | 1 2 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-24718@lists.php.net to get a copy of this message | ||
Hello Andrei,
the problem is not the 'as' part, the problem is accessing the array and
that currently must be a write context. Maybe we can work around tha at some
point i dunno.
best regards
marcus
Wednesday, July 19, 2006, 6:24:02 PM, you wrote:
> But how is foreach() a write context? Unless you mean that someone uses
> foreach($f->bar as &$val) { .. }. Can we detect that though?
> -Andrei
> On Jul 19, 2006, at 8:22 AM, Dmitry Stogov wrote:
>> __get() never worked in write context proper.
>> It just CAN NOT work proper, because __get() returns by value (zval*),
>> but
>> modification requires address (zval**).
>> We have a lot of __get() related bugs because of this situation in
>> bugs.php.net.
>>
>> Month ago Marcus disabled usage of __get() in write context and I am
>> completely agree with him
>> We cannot use E_STRICT for this error and then SIGSEGV.
>>
>> Thanks. Dmitry.
>>
>> --
>> PHP Internals - PHP Runtime Development Mailing List
>> To unsubscribe, visit: http://www.php.net/unsub.php
Best regards,
Marcus