spekkionu / tactician-container-selfhandling
Container-Aware Self-Handling commands for Tactician Command Bus
1.0.1
2016-12-22 00:35 UTC
Requires
- league/tactician: ^1.0
Requires (Dev)
- league/container: ^2.2
- phpunit/phpunit: ^5.5
- squizlabs/php_codesniffer: ^2.7
Suggests
- league/container: Needed for container aware self-handling commands.
This package is auto-updated.
Last update: 2024-11-12 13:37:12 UTC
README
Install
Via Composer
$ composer require spekkionu/tactician-container-selfhandling
If you want to use the container aware commands you will also need to install league/container
Usage
Add MiddleWare
use League\Tactician\CommandBus; use Spekkionu\Tactician\SelfExecuting\SelfExecutionMiddleware; $commandBus = new CommandBus([ // any other pre-execution middleware new SelfExecutionMiddleware(), // other middleware to handle non-self-executing commands // any other post-execution middleware ]);
Create a Command
Your commands must implement Spekkionu\Tactician\SelfExecuting\SelfExecutingCommand
and have a handle() method.
The handle method must have no parameters.
use Spekkionu\Tactician\SelfExecuting\SelfExecutingCommand; /** * Class ExampleSelfExecutingCommand */ class ExampleSelfExecutingCommand implements SelfExecutingCommand { /** * @return string */ public function handle() { // do work here } }
Run Command
$commandBus->handle(new ExampleSelfExecutingCommand());
Container-Aware Self-Executing Commands
Container aware commands will have dependencies injected into the handle()
method from league/container
.
use League\Container\Container; use League\Tactician\CommandBus; use Spekkionu\Tactician\SelfExecuting\SelfExecutionMiddleware; // Setup the Container $container = new Container(); $container->delegate( new \League\Container\ReflectionContainer ); $container->add('Logger', function() { return new Logger(); }); // Setup the command bus $commandBus = new CommandBus([ // any other pre-execution middleware new ContainerAwareSelfExecutionMiddleware($container), // other middleware to handle non-self-executing commands // any other post-execution middleware ]);
use Spekkionu\Tactician\SelfExecuting\SelfExecutingCommand; /** * Class ExampleSelfExecutingCommand */ class ExampleSelfExecutingCommand implements SelfExecutingCommand { /** * The logger will be injected automatically * @return string */ public function handle(Logger $logger) { $logger->log('log message'); } }
$commandBus->handle(new ExampleSelfExecutingCommand());
Testing
$ composer test
License
The MIT License (MIT). Please see License File for more information.