public function __construct(array $products = []) { $this->products = []; foreach ($products as $product) { if (!$product instanceof Product) { throw new \InvalidArgumentException(); } $this->products[(string) $product->sku()] = $product; } }