Source of file AbstractCalculator.php
Size: 1,132 Bytes - Last Modified: 2021-12-23T10:11:34+00:00
/var/www/docs.ssmods.com/process/src/code/calculator/AbstractCalculator.php
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 | <?php namespace EventRegistration\Calculator; abstract class AbstractCalculator{ /** * Float in - modifications - float out. * @return double */ abstract function calculate($value); /** * Get components for a given dataobject. * @return array */ protected function calculatorsFor(\DataObject $obj) { // allow overriding default calculators array $names = $obj->stat("calculators"); $names = empty($names) ? $obj->stat("default_calculators") : $names; return $this->initCalculators($names, $obj); } /** * Creates instances of components from component name strings * @param array names * @return array */ protected function initCalculators(array $names, \DataObject $dataobject) { $injector = \Injector::inst(); $calculators = array(); foreach($names as $name) { $calculator = $injector->create($this->nameToClass($name), $dataobject); $calculators[$name] = $calculator; } return $calculators; } /** * Get calculator full class name from short name */ protected function nameToClass($name) { return sprintf("EventRegistration\Calculator\%sCalculator", $name); } } |