calculator = $calculators; } /** * @return array */ public function getSubscribedEvents() { return [ 'prePersist', 'preUpdate', ]; } /** * @param PreUpdateEventArgs $args */ public function preUpdate(PreUpdateEventArgs $args) { $this->calculateFields($args); } /** * @param LifecycleEventArgs $args */ public function prePersist(LifecycleEventArgs $args) { $this->calculateFields($args); } /** * @param LifecycleEventArgs $args */ protected function calculateFields(LifecycleEventArgs $args) { $entity = $args->getObject(); if (!($entity instanceof Timesheet)) { return; } foreach ($this->calculator as $calculator) { $calculator->calculate($entity); } } }