On 11/17/2016 10:12 AM, Niklas Keller wrote:
No, what Craig is proposing is a type hint that covers both the existing
Countable interface and primitives which are naturally countable.

If the union types RFC had passed, you'd be able to say "array|Traversable
$foo"; a recent RFC lets you instead say "iterable $foo". The suggestion is
to add a keyword which similarly acts as "array|Countable $foo".

Unfortunately, as others have pointed out, it can't be called just
"countable", because that's the name of the existing interface. The
principle seems sound though, assuming we don't want to go down the route
of treating arrays as implementing interfaces.

I think it's better to implement method calls on primitives than
introducing new type keywords for every edge-case now. Once we have methods
on primitives (counting array here as primitive), arrays can just implement
the Countable interface and we're fine using Countable (the interface).

Methods on primitives have the additional advantage that we can clean up
the API and have improved readability when chaining e.g. array methods like
filter and map.

Regards, Niklas


Methods on primitives has been proposed a few times, but never gone anywhere because it's, well, really hard to do. :-) Have you a recommendation for how to do so?

(Honest question; I'd love primitive methods, especially if they're user-extensible.)

--Larry Garfield

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

Reply via email to