/** * Add the given events to the stream and assign a sequence number to them. * * @param Stream $stream * @param Stream\Event[] $uncommittedEvents * * @return void */ public function persist(Stream $stream, array $uncommittedEvents) { foreach ($uncommittedEvents as &$event) { $event = $event->withStream($stream); } $this->storage->persist($uncommittedEvents); }
/** * finds a user from storage based on ID and returns a User object located * in memory. Normally this kind of logic will be implemented using the Repository pattern. * However the important part is in mapRowToUser() below, that will create a business object from the * data fetched from storage * * @param int $id * * @return User */ public function findById(int $id) : User { $result = $this->adapter->find($id); if ($result === null) { throw new \InvalidArgumentException("User #{$id} not found"); } return $this->mapRowToUser($result); }