/** * Set the master variant * * @param VariantInterface $masterVariant * * @return $this */ public function setMasterVariant(VariantInterface $masterVariant) { $masterVariant->setMaster(true); /** @var VariantInterface $variant */ foreach ($this->variants as $variant) { if ($variant->isMaster() && $variant !== $masterVariant) { $variant->setMaster(false); } } if (!$this->variants->contains($masterVariant)) { $masterVariant->setObject($this); $this->variants->add($masterVariant); } return $this; }
/** * {@inheritDoc} */ public function inheritDefaults(VariantInterface $masterVariant) { if (!$masterVariant->isMaster()) { throw new InvalidArgumentException('Cannot inherit values from non master variant.'); } if ($this->isMaster()) { throw new LogicException('Master variant cannot inherit from another master variant.'); } return $this; }