On Tue, Feb 19, 2013 at 3:12 PM, Etienne Kneuss wrote:
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.
On Tue, Feb 19, 2013 at 2:55 PM, Derick Rethans wrote:
Gah, no top posting!
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 conversionsGah, no top posting!
On Tue, 19 Feb 2013, Etienne Kneuss wrote:
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 makingOn Tue, Feb 19, 2013 at 2:25 PM, Derick Rethans wrote:
I think the warning can stay as-is, __toString is not necessarilyOn 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?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).
available so casting to string in all occasions is probably not what
we want.
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).
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.
behavior will be the same as the following code:
function iterator_to_array($iter) {
foreach ($iter as $k => $v) {
$array[$k] = $v;
}
return $array;
}
I think it's reasonable to expect that the code will behave this way.
If there are no objections I'd like to vote on this already on February
28th or March 1st. It is a few days shy of the 2 week discussion period,
but I'd like to have this in 5.5 and the beta is tagged on the 7th already
:)
Nikita