2017 © Pedro Peláez
 

library prooph-direct-router

image

lezhnev74/prooph-direct-router

  • Monday, December 25, 2017
  • by lezhnev74
  • Repository
  • 1 Watchers
  • 0 Stars
  • 207 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 0 Forks
  • 0 Open issues
  • 5 Versions
  • 10 % Grown

The README.md

Latest Stable Version Build Status License Total Downloads, (*1)

Implicit routing a command to it's handler

A command is routed to the handler with the same name and "Handler" appended under the same namespace:, (*2)

namespace Some\Space;

// your command
class Command {}

// your command handler 
class CommandHandler {
    function __invoke(Command $cmd) {...} 
}

Benefits

By using conventions (implicit routing) you can easily add commands\queries without constant updating configuration files. Just put both files in the same folder and follow the name convention: - Handler class must be name exactly as a Command + Handler appended at the end - Both command and a handler must reside under the same namespace, (*3)

Just a handy tool :), (*4)

Installation

composer require lezhnev74/prooph-direct-router

Configuration

In case you use config files in your project, visit your prooph.php config file and update the "service_bus.command_bus.router.type" field. If you set up message bus manually, then scroll down to the "Usage" section., (*5)

//...
'service_bus' => [
    'command_bus' => [
        'router' => [
            'routes' => [
                // list of commands with corresponding command handler
            ],
            'type' => \DirectRouter\DirectRouter::class
        ],
    ],
//…

Usage

This package uses dependency-container to locate the handler for a given command, so you need to install some container package (which supports ContainerInterface), (*6)

//
// Manual message bus setup
// 1. Prepare router
$router = new DirectRouter();
$router->attachToMessageBus($commandBus);
// 2. Add service locator (to instantiate the handler). $container is your implementation of PSR-11 ContainerInterface
$locator = new ServiceLocatorPlugin($container);
$locator->attachToMessageBus($bus);

//
// Dispatch command
//
$command = new \Some\Space\Command(...);
$commandBus->dispatch($command);

The Versions

25/12 2017

dev-master

9999999-dev

  Sources   Download

MIT

The Requires

 

The Development Requires

15/04 2017
15/04 2017
15/04 2017
15/04 2017