/** * Handle a single domain event * * @param DomainEvent $event * @return void */ protected function when(DomainEvent $event) { $method = 'when' . ClassToString::short($event); if (is_callable([$this, $method])) { $this->{$method}($event); } }
public function replayEvents(Identity $identity, $offset = null, $max = null) { $events = $this->store->getAggregateHistoryFor($identity, $offset, $max); foreach ($events as $event) { $method = 'when' . ClassToString::short($event); if (!isset($this->listeners[$method])) { continue; } if (is_array($this->listeners[$method])) { foreach ($this->listeners[$method] as $listener) { call_user_func($listener, $event); } } else { call_user_func($this->listeners[$method], $event); } } return $this; }