This library provides some useful tools in order to create a simple command system.
// configuration
$handler = new AddItemToChartCommandHandler();
$locator = new CommandHandlerLocator();
$locator->register('AddItemToChartCommand', $handler);
$bus = new SequentialCommandBus($locator);
// usage
$command = new AddItemToChartCommand($item, $chart);
$bus->dispatch($command); // internally, the bus will call the corresponding handler.
We want to follow the Single Responsibility principle. Hence:
- A
CommandHandler
can only handle oneCommandInterface
- A
CommandBus
will only dispatch someCommandInterface
(and nothing more) - A
CommandHandlerLocator
is responsible of registering associations betweenCommand
andCommandHandler
It allows us to force some other conventions like the name of the CommandHandler
class that needs to match the
name of the Command
it handle. E.g: AddItemToChartCommand
will be handled by a AddItemToChartCommandHandler
object.