Hello Ron,

  the $_ would right now involve a deep copy which we try to avoid. We
just have to review the code and see what we can do about that. Maybe a
thing to do while in RC1 or a reason to postpone RC1. With discussions
like Date and Zip i'd say the latter and eventually have both in as it
means enough time to discuss both (Ilia?).

best regards
marcus

Thursday, July 20, 2006, 9:33:26 AM, you wrote:

> Can't you make it so that PHP internally uses a "nameless" variable in which
> it stores the result of the __get() before it continues to do anything with 
> it? I may be too much of a rookie here, but it seems to me that that could 
> solve a lot of problems. You could even write to it (if you'd allow writing 
> to a nameless variable which doesn't make sense, but could be allowed).

> Basically you'd internally be interpreting:

> foreach ($obj->somevar as $foo => $bar)
> {
> }

> as:

> $_ = $obj->somevar;
> foreach ($_ as $foo => $bar)
> {
> }

> or would that present other problems I don't see? This doesn't solve it when
> you wanna write to a virtual __get variable, but in a read-only situation, I
> as a user wouldn't want to implement a __getRef(), it wouldn't make sense 
> from a user perspective.

> - Ron



> ""Andi Gutmans"" <[EMAIL PROTECTED]> schreef in bericht 
> news:[EMAIL PROTECTED]
>> We were considering supporting a __getRef() method. You could implement
>> either or both of them and then the right thing would happen.
>> Dmitry, Marcus - Besides having to come to a decision about this, is there
>> any situation you guys discussed for which this would not work?
>>
>> Thx.
>>
>> Andi
>>
>>> -----Original Message-----
>>> From: Dmitry Stogov [mailto:[EMAIL PROTECTED]
>>> Sent: Wednesday, July 19, 2006 8:23 AM
>>> To: internals@lists.php.net
>>> Cc: Marcus Boerger; Andi Gutmans
>>> Subject: RE: [PHP-DEV] PHP 5.2-dev "Cannot use array returned
>>> from foo::__get('bar') in write context"
>>>
>>> __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.
>>>
>>>
>>>
>>>
>>> 




Best regards,
 Marcus

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to