Ejemplo n.º 1
0
 /**
  * {@inheritDoc}
  */
 public function save(AggregateRootInterface $aggregate, StreamName $streamName = null)
 {
     $streamName = $this->determineStreamName($streamName);
     $eventStream = new EventStream($streamName, $aggregate->getUncommittedEvents());
     $this->eventStore->append($eventStream);
     $eventStream->each(function (DomainMessage $domainMessage) {
         $this->eventBus->publish($domainMessage->getPayload());
     })->each(function (DomainMessage $domainMessage) use($streamName, $aggregate) {
         if ($this->snapshotter) {
             $this->snapshotter->take($streamName, $aggregate, $domainMessage);
         }
     });
 }