jowy/tactician-service-provider

Silex tactician 服务提供者

v2.1.0 2016-06-21 04:21 UTC

This package is not auto-updated.

Last update: 2024-09-14 17:16:17 UTC


README

Scrutinizer Code Quality Build Status

为 Pimple 或 Silex 容器提供 Tactician 服务

要求

  • PHP >= 5.5
  • Silex >= 2.0
  • Pimple >= 3.0

安装

composer require jowy/tactician-service-provider

使用

注册 tactician 服务提供者

$app->register(
    new TacticianServiceProvider(
        [
            'tactician.inflector' => 'class_name',
            'tactician.middleware' =>
                [
                    new LockingMiddleware()
                ]
       ]
   )
);

在 DIC 中注册命令处理器

处理器必须注册在容器中,并使用 FQCN 作为服务 ID

$app[HandlerClass::class] = function() {
    return new HandlerClass();
};

映射命令和处理器

在 tactician 命令总线服务提供者注册后,您可以映射命令和处理器

$app['tactician.locator']->addHandler(CommandClass::class, HandlerClass::class);

分发命令

$command = new CommandClass('param');

$container['tactician.command_bus']->handle($command)

选项

Inflector

  • class_name
  • class_name_without_suffix
  • handle
  • invoke

有关选择 Inflector 的更多信息,请参阅 本文档

中间件

在注册 tactician 服务时可以添加中间件。

$app->register(
    new TacticianServiceProvider(
        [
            'tactician.inflector' => 'class_name',
            'tactician.middleware' =>
                [
                    new LockingMiddleware(),
                    new SomeMiddleware(),
                    new OtherMiddleware()
                ]
        ]
    )
);

通过使用此方法,中间件可以可选地进行懒初始化

$app[LockingMiddleware::class] = function () {
    return new LockingMiddleware();
};

$app->register(
    new TacticianServiceProvider(
        [
            'tactician.inflector' => 'class_name',
            'tactician.middleware' =>
                [
                    LockingMiddleware::class
                ]
        ]
    )
);

许可证

MIT,见 LICENSE