*/ readonly final class EventCollection implements \IteratorAggregate { /** * @param Event[] $events */ public function __construct(private array $events) { } public function first(): Event { return array_values($this->events)[0]; } public function getIterator(): \Traversable { return new \ArrayIterator($this->events); } }