>
> 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

Reply via email to