Total Complexity | 4 |
Total Lines | 36 |
Duplicated Lines | 0 % |
Coverage | 0% |
Changes | 0 |
1 | <?php declare(strict_types=1); |
||
18 | final class CommandRouterProvisioner implements ProvisionerInterface |
||
19 | { |
||
20 | public function provision( |
||
21 | Injector $injector, |
||
22 | ConfigProviderInterface $configProvider, |
||
23 | ServiceDefinitionInterface $serviceDefinition |
||
24 | ): void { |
||
25 | $commandConfigs = (array)$configProvider->get('services.daikon.command_router.commands', []); |
||
26 | $injector |
||
27 | ->share(CommandRouter::class) |
||
28 | ->delegate( |
||
29 | CommandRouter::class, |
||
30 | function (UnitOfWorkMap $uowMap) use ($injector, $commandConfigs): CommandRouter { |
||
31 | $handlerMap = []; |
||
32 | foreach ($commandConfigs as $uowKey => $registeredHandlers) { |
||
33 | foreach ($registeredHandlers as $commandFqcn => $handlerFqcn) { |
||
34 | $handlerMap[$commandFqcn] = fn(): CommandHandler => $injector->make( |
||
|
|||
35 | $handlerFqcn, |
||
36 | [':unitOfWork' => $uowMap->get($uowKey)] |
||
37 | ); |
||
38 | } |
||
39 | } |
||
40 | return new CommandRouter($handlerMap); |
||
41 | } |
||
42 | ); |
||
43 | } |
||
44 | } |
||
45 |