On Tue, Feb 19, 2013 at 2:55 PM, Derick Rethans <der...@php.net> wrote:

> Gah, no top posting!
>
> On Tue, 19 Feb 2013, Etienne Kneuss wrote:
>
> > On Tue, Feb 19, 2013 at 2:25 PM, Derick Rethans <der...@php.net> wrote:
> >
> > > On Tue, 19 Feb 2013, Nikita Popov wrote:
> > >
> > > > This RFC proposes to remove the type-restrictions on Iterator keys
> > > > used in foreach:
> > > >
> > > > https://wiki.php.net/rfc/foreach-non-scalar-keys
> > > >
> > > > I took over Levi's RFC and added a patch for it.
> > >
> > > Under "Open Questions" you write:
> > >
> > > > What should be done with the keys that are valid in the iterator,
> > > > but not in the array? I think the best approach would be to just
> > > > set the array keys with the exact same semantics as PHP would do
> > > > (i.e. with all casts and warnings).
> > >
> > > Would __toString be called in case the key was an object?
>
> > I think the warning can stay as-is, __toString is not necessarily
> > available so casting to string in all occasions is probably not what
> > we want.
>
> I think it should cast to a string if possible. You are now making
> iterator_to_array not work with the new feature, and I find that a bit
> silly. Whether it should be __toString (or __toKey) I don't really care,
> but this new support for objects should be supported everywhere (and
> that includes iterator_to_array).
>

I think this RFC is orthogonal to iterator_to_array supporting conversions
from objects to keys.

$array[$obj] = 42; does not call __toString (or __toKey), it throws a
catchable fatal. IMO it would be inconsistent if iterator_to_array
gracefully accepted objects as keys.

Reply via email to