Skip to content

Instantly share code, notes, and snippets.

@JavierCane
Created November 20, 2016 12:38
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save JavierCane/952230458f04d5450ab137ef8264c370 to your computer and use it in GitHub Desktop.
Save JavierCane/952230458f04d5450ab137ef8264c370 to your computer and use it in GitHub Desktop.
<?php
namespace CodelyTv\Context\Meetup\Module\Video\Domain\Create;
use CodelyTv\Context\Meetup\Module\Video\Domain\Video;
use CodelyTv\Context\Meetup\Module\Video\Domain\VideoId;
use CodelyTv\Context\Meetup\Module\Video\Domain\VideoRepository;
use CodelyTv\Context\Meetup\Module\Video\Domain\VideoTitle;
use CodelyTv\Context\Meetup\Module\Video\Domain\VideoUrl;
use CodelyTv\Infrastructure\Bus\Event\DomainEventPublisher;
use CodelyTv\Shared\Domain\CourseId;
final class VideoCreator
{
private $repository;
private $publisher;
public function __construct(VideoRepository $repository, DomainEventPublisher $publisher)
{
$this->repository = $repository;
$this->publisher = $publisher;
}
public function create(VideoId $id, VideoTitle $title, VideoUrl $url, CourseId $courseId)
{
$video = Video::create($id, $title, $url, $courseId);
$this->repository->save($video);
$this->publisher->publish($video->pullDomainEvents());
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment