<?php declare(strict_types=1); final class SharingCollection implements Iterator, JsonSerializable { private int $position = 0; /** @var Sharing[] */ private array $sharings = []; public function add(Sharing $userId): void { $this->sharings[] = $userId; } public function current(): Sharing { return $this->sharings[$this->position]; } public function next(): void { $this->position++; } public function key(): int { return $this->position; } public function valid(): bool { return isset($this->sharings[$this->position]); } public function rewind(): void { $this->position = 0; } public function jsonSerialize() { return $this->sharings; } }