*/ private array $invoices = []; public function save(Invoice $invoice): void { $this->invoices[$invoice->id->toString()] = $invoice; } public function get(InvoiceId $id): Invoice { return $this->invoices[$id->toString()] ?? throw new \RuntimeException(sprintf('Invoice "%s" not found.', $id->toString())); } public function findByExternalOrderId(string $externalOrderId): ?Invoice { foreach ($this->invoices as $invoice) { if ($invoice->externalOrderId === $externalOrderId) { return $invoice; } } return null; } }