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
--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php