spekkionu / domain-dispatcher
Domain command dispatcher
1.0.0
2016-10-19 16:33 UTC
Requires
- php: ~5.6|~7.0
- league/container: ^2.2
Requires (Dev)
- phpunit/phpunit: ^5.5
- squizlabs/php_codesniffer: ^2.7
This package is auto-updated.
Last update: 2024-08-12 12:52:08 UTC
README
Command dispatcher that integrates with league/container.
Install
Via Composer
$ composer require spekkionu/domain-dispatcher
Usage
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);
Writing a 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);
Testing
$ composer test
License
The MIT License (MIT). Please see License File for more information.