Completed
Push — master ( 3db674...2e3aab )
by Remy
03:46
created

MongoDBExtension   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 26
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 7

Test Coverage

Coverage 47.06%

Importance

Changes 0
Metric Value
wmc 4
c 0
b 0
f 0
lcom 0
cbo 7
dl 0
loc 26
ccs 8
cts 17
cp 0.4706
rs 10

1 Method

Rating   Name   Duplication   Size   Complexity  
B loadInternal() 0 22 4
1
<?php
2
3
namespace Pouzor\MongoDBBundle\DependencyInjection;
4
5
use Pouzor\MongoDBBundle\DocumentManager\DocumentManager;
6
use Symfony\Component\Config\FileLocator;
7
use Symfony\Component\DependencyInjection\ContainerBuilder;
8
use Symfony\Component\DependencyInjection\Definition;
9
use Symfony\Component\DependencyInjection\Loader\YamlFileLoader;
10
use Symfony\Component\DependencyInjection\Reference;
11
use Symfony\Component\HttpKernel\DependencyInjection\ConfigurableExtension;
12
use Symfony\Component\HttpKernel\DependencyInjection\Extension;
13
use Symfony\Component\Yaml\Yaml;
14
15
/**
16
 * Class MongoDBExtension
17
 * @package Pouzor\MongoDBBundle\DependencyInjection
18
 */
19
class MongoDBExtension extends ConfigurableExtension
20
{
21
    // note that this method is called loadInternal and not load
22 1
    protected function loadInternal(array $mergedConfig, ContainerBuilder $container)
23
    {
24 1
        $loader = new YamlFileLoader($container, new FileLocator(__DIR__ . '/../Resources/config'));
25 1
        $loader->load('services.yml');
26
27 1
        foreach ($mergedConfig['connections'] as $name => $con) {
28
29
            $con['schema'] = Yaml::parse(
30
                file_get_contents($con['schema'])
31
            );
32
33
            $def = $container->register('document.manager.' . $name, DocumentManager::class);
34
            $def->addTag('document.manager', ['name' => $name]);
35
            $def->setArguments([$con, new Reference('logger')]);
36
            $def->addTag('monolog.logger', ['channel' => 'odm.mongo']);
37 1
        }
38
39 1
        if (isset($mergedConfig['default_connection']) && $container->hasDefinition(
40 1
                'document.manager.' . $mergedConfig['default_connection'])) {
41
            $container->setAlias('document.manager', 'document.manager.' . $mergedConfig['default_connection']);
42
        }
43 1
    }
44
}
45