/** * Register a requirement * * @param Requirement $requirement The requirement to add * * @return RequirementSet */ public function add(Requirement $requirement) { $merged = false; foreach ($this->requirements as $knownRequirement) { if ($knownRequirement instanceof Requirement && $requirement->equals($knownRequirement)) { $knownRequirement->setOptional($requirement->isOptional()); foreach ($requirement->getDescriptions() as $description) { $knownRequirement->addDescription($description); } $merged = true; break; } } if (!$merged) { $this->requirements[] = $requirement; } return $this; }