I am trying to understand something about ArrayObject and ArrayIterator classes
ArrayObject: This class implements the IteratorAggregate and Traversable interfaces. Since IteratorAggregate extends Traversable itself, why does ArrayObject implement both when it can just implement IteratorAggregate?
ArrayIterator: As above, this class implements both Iterator and Traversable which Iterator extends.
Why do these classes implement two interfaces when they could get away with implementing the one that extends Traversable?
According to the SPL source code, ArrayObject doesn’t implement
Traversabledirectly:This matches the SPL documentation. I believe DaveRandom is correct.