示例#1
0
 /**
  * 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);
     }
 }
示例#2
0
 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;
 }