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