• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

nextras / dbal / 18709492869

22 Oct 2025 08:02AM UTC coverage: 86.622% (-0.03%) from 86.655%
18709492869

Pull #312

github

web-flow
Merge c7d0a0211 into a89576c0a
Pull Request #312: Symfony bundle - Handle driver configuration with Reference class

1 of 2 new or added lines in 1 file covered. (50.0%)

1949 of 2250 relevant lines covered (86.62%)

4.31 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

97.37
/src/Bridges/SymfonyBundle/DependencyInjection/NextrasDbalExtension.php
1
<?php declare(strict_types = 1);
2

3
namespace Nextras\Dbal\Bridges\SymfonyBundle\DependencyInjection;
4

5

6
use Nextras\Dbal\Bridges\SymfonyBundle\DataCollector\QueryDataCollector;
7
use Nextras\Dbal\Connection;
8
use Nextras\Dbal\IConnection;
9
use Symfony\Component\DependencyInjection\ContainerBuilder;
10
use Symfony\Component\DependencyInjection\ContainerInterface;
11
use Symfony\Component\DependencyInjection\Definition;
12
use Symfony\Component\DependencyInjection\Extension\Extension;
13
use Symfony\Component\DependencyInjection\Reference;
14

15

16
class NextrasDbalExtension extends Extension
17
{
18
        /**
19
         * @param array<mixed> $configs
20
         */
21
        public function load(array $configs, ContainerBuilder $container): void
22
        {
23
                $configuration = new Configuration((bool) $container->getParameter('kernel.debug'));
5✔
24
                $config = $this->processConfiguration($configuration, $configs);
5✔
25

26
                $defaultConnectionName = $config['default_connection'];
5✔
27
                foreach ($config['connections'] as $name => $connectionConfig) {
5✔
28
                        $profiler = $connectionConfig['profiler'];
5✔
29
                        $explain = $connectionConfig['profilerExplain'];
5✔
30
                        $maxQueries = $config['max_queries'];
5✔
31
                        $this->loadConnection(
5✔
32
                                $container,
2✔
33
                                $name,
34
                                $connectionConfig,
35
                                $name === $defaultConnectionName,
5✔
36
                                $profiler,
37
                                $explain,
38
                                $maxQueries,
39
                        );
40
                }
41
        }
5✔
42

43

44
        /**
45
         * @param array<mixed> $config
46
         */
47
        private function loadConnection(
48
                ContainerBuilder $container,
49
                string $name,
50
                array $config,
51
                bool $isDefault,
52
                bool $profiler,
53
                bool $explain,
54
                int $maxQueries,
55
        ): void
56
        {
57
                $config['sqlProcessorFactory'] = new Reference(
5✔
58
                        "nextras_dbal.$name.sqlProcessorFactory",
5✔
59
                        ContainerInterface::NULL_ON_INVALID_REFERENCE,
5✔
60
                );
61

62
        if (isset($config['driver']) && is_string($config['driver']) && str_starts_with($config['driver'], '@')) {
5✔
NEW
63
            $config['driver'] = new Reference(ltrim($config['driver'], '@'));
×
64
        }
65

66
                $connectionDefinition = new Definition(Connection::class);
5✔
67
                $connectionDefinition->setArgument('$config', $config);
5✔
68
                $connectionDefinition->setPublic(true);
5✔
69

70
                $container->addDefinitions([
5✔
71
                        "nextras_dbal.$name.connection" => $connectionDefinition,
5✔
72
                ]);
73

74
                if ($isDefault) {
5✔
75
                        $container->setAlias(IConnection::class, "nextras_dbal.$name.connection")
5✔
76
                                ->setPublic(true);
5✔
77
                }
78

79
                if ($profiler) {
5✔
80
                        $collectorName = "nextras_dbal.$name.query_data_collector";
5✔
81
                        $collectorDefinition = new Definition(QueryDataCollector::class);
5✔
82
                        $collectorDefinition->setArgument('$connection', new Reference("nextras_dbal.$name.connection"));
5✔
83
                        $collectorDefinition->setArgument('$explain', $explain);
5✔
84
                        $collectorDefinition->setArgument('$name', $collectorName);
5✔
85
                        $collectorDefinition->setArgument('$maxQueries', $maxQueries);
5✔
86
                        $collectorDefinition->addTag('data_collector', [
5✔
87
                                'template' => '@NextrasDbal/DataCollector/template.html.twig',
5✔
88
                                'id' => $collectorName,
5✔
89
                        ]);
90

91
                        $container->addDefinitions([
5✔
92
                                $collectorName => $collectorDefinition,
5✔
93
                        ]);
94

95
                        $connectionDefinition->addMethodCall('addLogger', [new Reference($collectorName)]);
5✔
96
                }
97
        }
5✔
98
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc