As this class is not implementing the `Iterator`, it should make use of `IteratorAggregate` to open implementation of external/existing/php-internal iterators; or is there any reason for this, I don't see right now?

It should implement `Countable`, too. The `count` method already exists.

From an architecture point of view, there is a domain specific interface missing to reflect the API of this class. Currently, it's not exchangeable. This interface should then exchange `Iterator` or `IteratorAggregate` as mentioned above with `Traversable`.