Completed
Push — master ( 98f353...32973a )
by GBProd
04:02
created

ElasticaExtension::createClientId()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 7
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 4
CRAP Score 1

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 7
ccs 4
cts 4
cp 1
rs 9.4285
cc 1
eloc 4
nc 1
nop 1
crap 1
1
<?php
2
3
namespace GBProd\ElasticaBundle\DependencyInjection;
4
5
use Elastica\Client;
6
use Symfony\Component\Config\FileLocator;
7
use Symfony\Component\DependencyInjection\ContainerBuilder;
8
use Symfony\Component\DependencyInjection\Loader;
9
use Symfony\Component\HttpKernel\DependencyInjection\Extension;
10
11
/**
12
 * Extension class for ElasticaExtension
13
 *
14
 * @author gbprod <[email protected]>
15
 */
16
class ElasticaExtension extends Extension
17
{
18
    const CLIENT_ID_TEMPLATE = 'elastica.%s_client';
19
20
    /**
21
     * {@inheritdoc}
22
     */
23 2
    public function load(array $configs, ContainerBuilder $container)
24
    {
25 2
        $configuration = new Configuration();
26 2
        $config = $this->processConfiguration($configuration, $configs);
27
28 2
        $this->loadClients($config, $container);
29 2
    }
30
31 2
    private function loadClients(array $config, ContainerBuilder $container)
32
    {
33 2
        foreach ($config['clients'] as $clientName => $clientConfig) {
34 2
            $this->loadClient($clientName, $clientConfig, $container);
35 2
        }
36 2
    }
37
38 2
    private function loadClient($clientName, array $clientConfig, ContainerBuilder $container)
39
    {
40
        $container
41 2
            ->register($this->createClientId($clientName), Client::class)
42 2
            ->addArgument($clientConfig)
43
        ;
44 2
    }
45
46 2
    private function createClientId($clientName)
47
    {
48 2
        return sprintf(
49 2
            self::CLIENT_ID_TEMPLATE,
50
            $clientName
51 2
        );
52
    }
53
}