Hello Rasmus,

  though you are probably right here your idea brought to it's full
extend will bring a major BC break. Just consider we had both key
and value as a zval then the current behavior would change for quite
a lot of situations including not only objects and resources but also
booleans, floats and NULL.

Right now everybody is used to the restiction that an array key can
only be a string or an integer and if not it is either not acceptable
as a key at all or is being converted to either one.

best regards
marcus

Saturday, June 3, 2006, 6:30:38 PM, you wrote:

> I don't understand why using the object as an index would trigger a 
> __toString() call.  PHP's array indices are not defined to be strings, 
> so I don't see this as being a string context use and thus __toString() 
> shouldn't be called.

> I also don't see why we need to make a distinction between the key and 
> the value here if there is any way we can avoid it.

> For example, this obviously works:

>    class foo {
>      function a() { echo "a"; }
>    }
>    $a = new foo();
>    $b[1] = $a;
>    $b[1]->a();

> Why shouldn't this?

>    $b[$a] = 1;
>    key($b)->a();

> I have always looked a PHP array as having 2 places to store things. 
> You can store stuff in the key with the caveat/feature that it must be 
> unique and you can store whatever you want in the value part.  Only 
> allowing strings and integers in the key seems like an arbitrary 
> restriction to me.  As long as the key is something we can somehow 
> uniquely identify I think we should aim to support it.

> -Rasmus

> Ilia Alshanetsky wrote:
>> I think this is a potentially missing bit of functionality we definitely 
>> need to consider including. There is really no technical reason why 
>> $foo[new ToStringObject] = "bar"; cannot work or a reason why it 
>> shouldn't as far as functionality goes.
>> 
>> 
>> Ilia Alshanetsky
>> 
>> 
>> 
>> 
>> On 3-Jun-06, at 7:42 AM, Marcus Boerger wrote:
>> 
>>> Hello guys,
>>>
>>>   the attached patch closes one more __toString() part. It allows
>>> to use objects that define __toString as indexes to arrays. What do
>>> you guys think about this, should we add it or stay with the old
>>> behavior that didn't allow objects as indexes at all.
>>>
>>> --Best regards,
>>>  Marcus                          mailto:[EMAIL PROTECTED]
>>> <ze2-offset-obj-tostring-20060603.diff.txt>
>>> --PHP Internals - PHP Runtime Development Mailing List
>>> To unsubscribe, visit: http://www.php.net/unsub.php
>> 
>> --PHP Internals - PHP Runtime Development Mailing List
>> To unsubscribe, visit: http://www.php.net/unsub.php




Best regards,
 Marcus

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

Reply via email to