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