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
CommandHandlercan only handle oneCommandInterface - A
CommandBuswill only dispatch someCommandInterface(and nothing more) - A
CommandHandlerLocatoris responsible of registering associations betweenCommandandCommandHandler
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.


