Skip to content

robotusers/commander

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Commander

Software License Build Status codecov

Command Bus abstraction for PHP.

Installation

composer require robotusers/commander

Command Bus abstraction

This library provides a CommandBusInterface which a command bus should implement.

Using the command bus

use Robotusers\Commander\CommandBusAwareInterface;
use Robotusers\Commander\CommandBusAwareTrait;

class OrdersController implements CommandBusAwareInterface
{
   use CommandBusAwareTrait;

   public function makeOrder()
   {
        ...
        $command = new MakeOrderCommand($data);
        $this->handleCommand($command);
        ...
   }

}

Adapters

The library provides adapters for the most common command bus implementations.

Tactician

composer require league/tactician
use League\Tactician\CommandBus;
use Robotusers\Commander\Adapter\TacticianAdapter;

$commandBus = new CommandBus($middleware);
$adapter = new TacticianAdapter($commandBus);

$controller->setCommandBus($adapter);

SimpleBus/MessageBus

composer require simple-bus/message-bus
use Robotusers\Commander\Adapter\SimpleBusAdapter;
use SimpleBus\Message\Bus\Middleware\MessageBusSupportingMiddleware;

$commandBus = new MessageBusSupportingMiddleware();
$adapter = new SimpleBusAdapter($commandBus);

$controller->setCommandBus($adapter);

PSB - ProophServiceBus

composer require prooph/service-bus
use Prooph\ServiceBus\CommandBus;
use Robotusers\Commander\Adapter\ServiceBusAdapter;

$commandBus = new CommandBus();
$adapter = new ServiceBusAdapter($commandBus);

$controller->setCommandBus($adapter);

Writing a custom adapter

You can write your custom adapter. The adapter must implement Robotusers\Commander\CommandBusInterface.

class MyAdapter implements CommandBusInterface
{
    public function handle($command)
    {
        //handle a command
    }
}