bezdomni / tactician-pimple
Tactician command locator for the Pimple DI container
Installs: 20 951
Dependents: 1
Suggesters: 0
Security: 0
Stars: 5
Watchers: 3
Forks: 0
Open Issues: 0
Requires
- php: >=5.5
- league/tactician: ^1.0
- pimple/pimple: ^3.0
Requires (Dev)
- phpunit/phpunit: ~4.3
This package is not auto-updated.
Last update: 2024-11-09 19:34:38 UTC
README
Allows lazy loading of command handlers from a Pimple dependency injection container.
Install
Install via composer
composer require bezdomni/tactician-pimple
Usage
Presuming you have a couple of commands: UserAddCommand
, UserDeleteCommand
,
and corresponding handlers UserAddHandler
, UserDeleteHandler
.
use Bezdomni\Tactician\Pimple\PimpleLocator; use League\Tactician\CommandBus; use League\Tactician\Handler\CommandHandlerMiddleware; use League\Tactician\Handler\CommandNameExtractor\ClassNameExtractor; use League\Tactician\Handler\MethodNameInflector\HandleInflector; use Pimple\Container; // Create a container and configure the handlers on it $container = new Container(); $container['handlers.user.add'] = function () { echo "Creating AddUserHandler\n"; return new AddUserHandler(); }; $container['handlers.user.delete'] = function () { echo "Creating DeleteUserHandler\n"; return new DeleteUserHandler(); }; // Map command class names to container keys holding corresponding handlers $locatorMap = [ AddUserCommand::class => 'handlers.user.add', DeleteUserCommand::class => 'handlers.user.delete', ]; // Create the locator $locator = new PimpleLocator($container, $locatorMap); // Create a command handler middleware using the pimple locator $middleware = new CommandHandlerMiddleware( new ClassNameExtractor(), $locator, new HandleInflector() ); // Create the command bus using the middleware, and you're ready to go $commandBus = new CommandBus([$middleware]); // Create and run commands on the command bus $addUserCommand = new AddUserCommand(); $deleteUserCommand = new DeleteUserCommand(); $commandBus->handle($addUserCommand); $commandBus->handle($deleteUserCommand);
License
The MIT License (MIT). Please see License File for more information.