Skip to content

The command part of the Command Query Responsibility Segregation

License

Notifications You must be signed in to change notification settings

php-ddd/command

Repository files navigation

Command Build Status Scrutinizer Code Quality Code Coverage SensioLabsInsight

This library provides some useful tools in order to create a simple command system.

How it works

// 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.

Conventions

We want to follow the Single Responsibility principle. Hence:

  • A CommandHandler can only handle one CommandInterface
  • A CommandBus will only dispatch some CommandInterface (and nothing more)
  • A CommandHandlerLocator is responsible of registering associations between Command and CommandHandler

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.

About

The command part of the Command Query Responsibility Segregation

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages