Это некий класс, похожий на массив чего-то определенного, но не совсем таковой.
Отличия от стандартных массивов:
- строгая типизация
- возможность привязать коллекцию к какому-либо объекту
например:
$store = new Store();
/** @property $collection ItemCollection */
$store->collection->add(Item $item);
$store->collection->remove($item);
...
При этом коллекция должна реализовывать интерфейсы:
- IteratorAggregate (для возможности перебора)
- ArrayAccess(для доступа к элементу по индексу)
- Countable (для определения размерности)