Common bus library

v0.0.2 2018-09-17 10:40 UTC

This package is auto-updated.

Last update: 2024-05-23 02:19:10 UTC



You can create your own bus implementing CommandBus or QueryBus Interface, or you can use the pre-configured Bus CommandBusSync for Commands or QueryBusSync for Queries

Using Buses

$bus = new CommandBusSync();
$bus->register(YourCommandClass::class, new Your\Invokable\Handler());
$bus->dispatch(new YourCommandClass());

If you use a Service Container like Symfony Dependency Injection you can configure your bus registering your commands:

    class: Unilae\HexagonalUtils\Infrastructure\Bus\Command\CommandBusSync
      - method: register
         - 'Your\Command\Class\Name'
         - '@Your\Handler\Service\Id'

With this, you can inject the bus to your controller:

final class MyController
    private $bus;
    public function __construct(CommandBusSync $bus)
        $this->bus = $bus;    
    public function __invoke(Request $request)
            new Your\Command\Class(
                new Uuid($request->get('request_id'))

If you register more than one command to the same bus, i suggest you to install and use ocramius/proxy-manager for proxy handlers.

Using Middlewares

The pre-configured command bus supports Middleware chain, for use you can pass your Middleware classes to your Bus constructor