/** * @param Uuid $id * @param AddAuthor[] $authors * @param string $title * @param string $isbn * @return Book */ public static function add(Uuid $id, array $authors, $title, $isbn) { $instance = new self($id); $authorsAdded = array_map(function (AddAuthor $author) use($instance) { $authorAdded = new AuthorAdded($instance->id, $author->getFirstName(), $author->getLastName()); $instance->applyAuthorAdded($authorAdded); return $authorAdded; }, $authors); $instance->applyChange(new BookAdded($instance->getId(), $authorsAdded, $title, $isbn)); return $instance; }