Domain Dispatcher
, (*1)
Command dispatcher that integrates with league/container., (*2)
Install
Via Composer, (*3)
``` bash
$ composer require spekkionu/domain-dispatcher, (*4)
## Usage
You must first register the service provider in your league/container instance.
``` php
$container->addServiceProvider('Spekkionu\DomainDispatcher\DispatcherServiceProvider');
Then you can use the dispatcher by pulling it out of the container., (*5)
``` php
$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);, (*6)
## Writing a command
``` php
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;
}
}
``` php
$user = new User();
$user->name = 'Bob';
$user->email = 'email@example.com';, (*7)
$command = new MyCommand($user);
$result = $dispatcher->dispatch($command);, (*8)
## Testing
``` bash
$ composer test
License
The MIT License (MIT). Please see License File for more information., (*9)