Command dispatcher that integrates with league/container.
Via Composer
$ composer require spekkionu/domain-dispatcher
You must first register the service provider in your league/container instance.
$container->addServiceProvider('Spekkionu\DomainDispatcher\DispatcherServiceProvider');
Then you can use the dispatcher by pulling it out of the container.
$container = new \League\Container\Container();
$container->delegate(
new \League\Container\ReflectionContainer
);
$dispatcher = $container->get('Spekkionu\DomainDispatcher\Dispatcher');
$command = new MyCommand($var1, $var2);
$dispatcher->dispatch($command);
class MyCommand
{
/**
* @var User
*/
private $user;
/**
* You can add any arguments you need to the constructor
*/
public function __construct(User $user)
{
$this->user = $user;
}
/**
* The command must have a handle method.
* Any dependencies for the handle method will be automatically resolved by the container
* Whatever you return here will be returned by the dispatch call
*/
public function handle(EmailSender $mailer, Logger $logger)
{
// Your code goes here
$result = $mailer->sendWelcomeEmail($user);
$logger->log('Welcome email sent to user');
return $result;
}
}
$user = new User();
$user->name = 'Bob';
$user->email = 'email@example.com';
$command = new MyCommand($user);
$result = $dispatcher->dispatch($command);
$ composer test
The MIT License (MIT). Please see License File for more information.