calculators[$calculator::getAlias()] = $calculator; if ($default) { $this->defaultCalculator[] = $calculator::getAlias(); } } /** * @param AbstractElement[] $elements * * @return CalculatorResult[] */ public function calculateDefault(array $elements) { $results = []; foreach ($this->defaultCalculator as $alias) { $calculator = $this->calculators[$alias]; $result = $calculator->calculate($elements); if (null !== $result) { $results[$calculator::getAlias()] = $result; } } return $results; } /** * @param string $alias * * @return CalculatorInterface */ public function getCalculator($alias) { if (false === array_key_exists($alias, $this->calculators)) { throw new OutOfBoundsException("The calculator with alias '{$alias}' does " . 'not exists. Possible values are ' . implode(', ', array_keys($this->calculators))); } return $this->calculators[$alias]; } }