Download the PHP package remotelyliving/php-command-bus without Composer
On this page you can find all versions of the php package remotelyliving/php-command-bus. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download remotelyliving/php-command-bus
More information about remotelyliving/php-command-bus
Files in remotelyliving/php-command-bus
Package php-command-bus
Short Description A php query bus for abstracting querying, data loading, and graph building
License MIT
Informations about the package php-command-bus
php-command-bus: 🚍 A Command Bus Implementation For PHP 🚍
Use Cases
If you want a light weight compliment to your Query Bus for CQRS, hopefully this library helps out.
Installation
Usage
Create the Command Resolver
The Resolver can have Handlers added manually or locate them in a PSR-11 Service Container Commands are mapped 1:1 with a handler and are mapped by the Command class name as the lookup key.
Create the Command Bus
The Command Bus takes in a Command Resolver and optional PSR-14 Event Dispatcher and pushes whatever Middleware you want on the stack.
Middleware is any callable. Some base middleware is included: src/Middleware
That's really all there is to it!
Command
The Command for this library is left intentionally unimplemented. It's just an object. My suggestion for Command objects is to keep them as a DTO of what you need to perform a command.
An example command might look like this:
As you can see, it's just a few getters
Handler
The Handlers are where the magic happens.
- Inject what ever Domain Services you need to perform your command in the contstuctor.
- Perform the logic for the command.
- Yield Domain Events that will be automatically dispatched by the PSR14 Dispatcher you pass in to the Bus (When calling a subsequent command from within the handler, make sure your events don't get out of order)
- Execute other commands from within the handler
Going with our ReserveRoom example, a Handler could look like:
Middleware
Middleware that this library ships with. The default execution order is LIFO and the signature very simple.
A Middleware must pass the command to the $next callable and execute it to continue the execution of the Command.
CommandLogger
Helpful for debugging, but best left for dev and stage environments.
All versions of php-command-bus with dependencies
ext-json Version *
ext-filter Version *
ext-mbstring Version *
psr/log Version ^1.0
psr/container Version ^1.0
myclabs/php-enum Version ^1.7
psr/event-dispatcher Version ^1.0