order = $order; $this->elements = []; foreach ($elements as $element) { if (null === $element->getOrder() || $element->getOrder()->getId() !== $order->getId()) { throw new \InvalidArgumentException('Elements should belong to same order'); } $this->elements[$element->getId()] = $element; } } /** * @return Order */ public function getOrder() { return $this->order; } /** * @return OrderElement[] */ public function getElements() { return $this->elements; } public function getBaseIds() { $baseIds = []; foreach ($this->elements as $element) { $baseIds[$element->getBaseId()] = true; } return array_keys($baseIds); } }