This repository has been archived by the owner on Sep 7, 2020. It is now read-only.
/
ConfigProvider.php
76 lines (70 loc) · 2.74 KB
/
ConfigProvider.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
<?php
namespace InFw\TacticianAdapter;
use InFw\TacticianAdapter\Factory\CommandBusFactory;
use InFw\TacticianAdapter\Factory\HandlerLocatorFactory;
use InFw\TacticianAdapter\Factory\LoggerMiddlewareFactory;
use InFw\TacticianAdapter\Factory\QueryBusFactory;
use League\Tactician\CommandBus;
use League\Tactician\Handler\CommandNameExtractor\ClassNameExtractor;
use League\Tactician\Handler\CommandNameExtractor\CommandNameExtractor;
use League\Tactician\Handler\Locator\HandlerLocator;
use League\Tactician\Handler\MethodNameInflector\InvokeInflector;
use League\Tactician\Handler\MethodNameInflector\MethodNameInflector;
use League\Tactician\Logger\Formatter\ClassPropertiesFormatter;
use League\Tactician\Logger\Formatter\Formatter;
use League\Tactician\Logger\LoggerMiddleware;
use League\Tactician\Plugins\LockingMiddleware;
class ConfigProvider
{
public function __invoke()
{
return [
'command_bus' => $this->getBusConfig(),
'query_bus' => $this->getQueryBusConfig(),
'dependencies' => $this->getDependencies(),
];
}
protected function getBusConfig(): array
{
return [
'locator' => HandlerLocator::class,
'inflector' => MethodNameInflector::class,
'extractor' => CommandNameExtractor::class,
'formatter' => Formatter::class,
'middleware' => [
LockingMiddleware::class => LockingMiddleware::class,
LoggerMiddleware::class => LoggerMiddleware::class,
],
'handler_map' => [],
];
}
protected function getQueryBusConfig(): array
{
return [
'locator' => 'query_bus.handler_locator',
'inflector' => MethodNameInflector::class,
'extractor' => CommandNameExtractor::class,
'formatter' => Formatter::class,
'middleware' => [],
'handler_map' => [],
];
}
protected function getDependencies(): array
{
return [
'invokables' => [
Formatter::class => ClassPropertiesFormatter::class,
MethodNameInflector::class => InvokeInflector::class,
CommandNameExtractor::class => ClassNameExtractor::class,
LockingMiddleware::class => LockingMiddleware::class,
],
'factories' => [
CommandBus::class => CommandBusFactory::class,
QueryBus::class => QueryBusFactory::class,
HandlerLocator::class => [HandlerLocatorFactory::class, 'command_bus'],
'query_bus.handler_locator' => [HandlerLocatorFactory::class, 'query_bus'],
LoggerMiddleware::class => LoggerMiddlewareFactory::class,
],
];
}
}