spekkionu/tactician-container-selfhandling

Container-Aware Self-Handling commands for Tactician Command Bus

Maintainers

👁 spekkionu

Package info

github.com/spekkionu/tactician-container-selfhandling

pkg:composer/spekkionu/tactician-container-selfhandling

Statistics

Installs: 223

Dependents: 1

Suggesters: 0

Stars: 1

Open Issues: 0

1.0.1 2016-12-22 00:35 UTC

Requires

Suggests

Provides

None

Conflicts

None

Replaces

None

MIT 4ead2577e7acc0463090eff2ad3531f96c66b828

This package is auto-updated.

Last update: 2026-06-12 16:59:36 UTC


README

👁 Latest Stable Version
👁 Build Status
👁 License
👁 Code Coverage
👁 Scrutinizer Code Quality
👁 SensioLabsInsight

Install

Via Composer

$ composer require spekkionu/tactician-container-selfhandling

If you want to use the container aware commands you will also need to install league/container

Usage

Add MiddleWare

use League\Tactician\CommandBus;
use Spekkionu\Tactician\SelfExecuting\SelfExecutionMiddleware;

$commandBus = new CommandBus([
 // any other pre-execution middleware
 new SelfExecutionMiddleware(),
 // other middleware to handle non-self-executing commands
 // any other post-execution middleware
]);

Create a Command

Your commands must implement Spekkionu\Tactician\SelfExecuting\SelfExecutingCommand and have a handle() method.

The handle method must have no parameters.

use Spekkionu\Tactician\SelfExecuting\SelfExecutingCommand;

/**
 * Class ExampleSelfExecutingCommand
 */
class ExampleSelfExecutingCommand implements SelfExecutingCommand
{
 /**
 * @return string
 */
 public function handle()
 {
 // do work here
 }
}

Run Command

$commandBus->handle(new ExampleSelfExecutingCommand());

Container-Aware Self-Executing Commands

Container aware commands will have dependencies injected into the handle() method from league/container.

use League\Container\Container;
use League\Tactician\CommandBus;
use Spekkionu\Tactician\SelfExecuting\SelfExecutionMiddleware;

// Setup the Container
$container = new Container();
$container->delegate(
 new \League\Container\ReflectionContainer
);
$container->add('Logger', function() {
 return new Logger();
});

// Setup the command bus
$commandBus = new CommandBus([
 // any other pre-execution middleware
 new ContainerAwareSelfExecutionMiddleware($container),
 // other middleware to handle non-self-executing commands
 // any other post-execution middleware
]);
use Spekkionu\Tactician\SelfExecuting\SelfExecutingCommand;

/**
 * Class ExampleSelfExecutingCommand
 */
class ExampleSelfExecutingCommand implements SelfExecutingCommand
{
 /**
 * The logger will be injected automatically
 * @return string
 */
 public function handle(Logger $logger)
 {
 $logger->log('log message');
 }
}
$commandBus->handle(new ExampleSelfExecutingCommand());

Testing

$ composer test

License

The MIT License (MIT). Please see License File for more information.