ConfigProvider::getDependencies()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 39
Code Lines 36

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 2
CRAP Score 1

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 36
c 1
b 0
f 0
nc 1
nop 0
dl 0
loc 39
ccs 2
cts 2
cp 1
crap 1
rs 9.344
1
<?php
2
3
declare(strict_types=1);
4
5
namespace TMV\Laminas\Messenger;
6
7
use Doctrine\Persistence\ManagerRegistry;
8
use Laminas\ServiceManager\Factory\InvokableFactory;
9
use Psr\Log\LoggerInterface;
10
use Symfony\Component\Messenger as SFMessenger;
11
12
class ConfigProvider
13
{
14
    public const CONFIG_KEY = 'messenger';
15 3
16
    /**
17
     * @return array<string, mixed>
18
     */
19 3
    public function getDependencies(): array
20
    {
21
        return [
22
            'aliases' => [
23
                SFMessenger\Transport\Sender\SendersLocatorInterface::class => SFMessenger\Transport\Sender\SendersLocator::class,
24
                SFMessenger\Transport\TransportFactoryInterface::class => SFMessenger\Transport\TransportFactory::class,
25
            ],
26
            'factories' => [
27
                Bridge\Doctrine\Middleware\DoctrineClearEntityManagerMiddleware::class => Bridge\Doctrine\Factory\Middleware\DoctrineClearEntityManagerMiddlewareFactory::class,
28
                Bridge\Doctrine\Middleware\DoctrineCloseConnectionMiddleware::class => Bridge\Doctrine\Factory\Middleware\DoctrineCloseConnectionMiddlewareFactory::class,
29
                Bridge\Doctrine\Middleware\DoctrineOpenTransactionLoggerMiddleware::class => Bridge\Doctrine\Factory\Middleware\DoctrineOpenTransactionLoggerMiddlewareFactory::class,
30
                Bridge\Doctrine\Middleware\DoctrinePingConnectionMiddleware::class => Bridge\Doctrine\Factory\Middleware\DoctrinePingConnectionMiddlewareFactory::class,
31
                Bridge\Doctrine\Middleware\DoctrineTransactionMiddleware::class => Bridge\Doctrine\Factory\Middleware\DoctrineTransactionMiddlewareFactory::class,
32
                SFMessenger\Transport\InMemoryTransportFactory::class => InvokableFactory::class,
33
                SFMessenger\Bridge\Amqp\Transport\AmqpTransportFactory::class => InvokableFactory::class,
34
                SFMessenger\Bridge\Doctrine\Transport\DoctrineTransportFactory::class => Bridge\Doctrine\Factory\Transport\DoctrineTransportFactoryFactory::class,
35
                SFMessenger\Bridge\Redis\Transport\RedisTransportFactory::class => InvokableFactory::class,
36
                SFMessenger\Transport\Sync\SyncTransportFactory::class => Factory\Transport\Sync\SyncTransportFactoryFactory::class,
37
                SFMessenger\Transport\TransportFactory::class => Factory\Transport\TransportFactoryFactory::class,
38
                SFMessenger\Transport\Sender\SendersLocator::class => Factory\Transport\Sender\SendersLocatorFactory::class,
39
                SFMessenger\Transport\Serialization\PhpSerializer::class => InvokableFactory::class,
40
                SFMessenger\Transport\Serialization\Serializer::class => InvokableFactory::class,
41
                SFMessenger\EventListener\DispatchPcntlSignalListener::class => InvokableFactory::class,
42
                SFMessenger\EventListener\StopWorkerOnSigtermSignalListener::class => InvokableFactory::class,
43
                SFMessenger\EventListener\SendFailedMessageForRetryListener::class => Factory\Listener\SendFailedMessageForRetryListenerFactory::class,
44
                SFMessenger\EventListener\SendFailedMessageToFailureTransportListener::class => Factory\Listener\SendFailedMessageToFailureTransportListenerFactory::class,
45
                SFMessenger\EventListener\StopWorkerOnRestartSignalListener::class => Factory\Listener\StopWorkerOnRestartSignalListenerFactory::class,
46
                SFMessenger\Command\ConsumeMessagesCommand::class => Factory\Command\ConsumeMessagesCommandFactory::class,
47
                SFMessenger\Command\StopWorkersCommand::class => Factory\Command\StopWorkersCommandFactory::class,
48
                SFMessenger\Command\SetupTransportsCommand::class => Factory\Command\SetupTransportsCommandFactory::class,
49
                SFMessenger\Command\FailedMessagesRemoveCommand::class => Factory\Command\FailedMessagesRemoveCommandFactory::class,
50
                SFMessenger\Command\FailedMessagesRetryCommand::class => Factory\Command\FailedMessagesRetryCommandFactory::class,
51
                SFMessenger\Command\FailedMessagesShowCommand::class => Factory\Command\FailedMessagesShowCommandFactory::class,
52
                'messenger.bus.default' => [Factory\MessageBusFactory::class, 'messenger.bus.default'],
53
                'messenger.event_dispatcher' => Factory\EventDispatcherFactory::class,
54
                'messenger.routable_message_bus' => [Factory\RoutableMessageBusFactory::class, 'messenger.bus.default'],
55
                'messenger.retry_strategy_locator' => Factory\Retry\RetryStrategyLocatorFactory::class,
56 2
                'messenger.receivers_locator' => Factory\Transport\Receiver\ReceiversLocatorFactory::class,
57
                'messenger.transports_locator' => Factory\Transport\TransportProviderFactory::class,
58
            ],
59 2
        ];
60
    }
61
62
    /**
63
     * @return array<string, mixed>
64
     */
65
    public function __invoke(): array
66
    {
67
        return [
68
            'dependencies' => $this->getDependencies(),
69
            'messenger' => [
70
                'doctrine' => [
71
                    'connection_registry' => null,
72
                    'manager_registry' => ManagerRegistry::class,
73
                ],
74
                'failure_transport' => null,
75
                'event_dispatcher' => 'messenger.event_dispatcher',
76
                'logger' => LoggerInterface::class,
77
                'default_serializer' => SFMessenger\Transport\Serialization\PhpSerializer::class,
78
                'cache_pool_for_restart_signal' => null,
79
                'transport_factories' => [
80
                    SFMessenger\Transport\Sync\SyncTransportFactory::class,
81
                    SFMessenger\Transport\InMemoryTransportFactory::class,
82
                    SFMessenger\Bridge\Doctrine\Transport\DoctrineTransportFactory::class,
83
                    SFMessenger\Bridge\Redis\Transport\RedisTransportFactory::class,
84
                    SFMessenger\Bridge\Amqp\Transport\AmqpTransportFactory::class,
85
                ],
86
                'buses' => [
87
                    'messenger.bus.default' => [
88
                        'middleware' => [],
89
                        'default_middleware' => true,
90
                        'allow_no_handler' => false,
91
                        'handlers' => [],
92
                        'routes' => [],
93
                    ],
94
                ],
95
                'transports' => [],
96
            ],
97
        ];
98
    }
99
}
100