Completed
Push — master ( 53af55...12808e )
by Kevin
07:37 queued 03:31
created

StandardConfigurationProvider   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 43
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 5

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 5
lcom 1
cbo 5
dl 0
loc 43
rs 10
c 1
b 0
f 0

3 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 14 3
A configureDi() 0 7 1
A configureObject() 0 8 1
1
<?php
2
3
namespace Magium\Util\Configuration;
4
5
use Zend\Di\Di;
6
7
class StandardConfigurationProvider implements ConfigurationProviderInterface
8
{
9
    protected $configurationDir;
10
11
    protected $classConfigurationReader;
12
13
    protected $configurationReader;
14
15
    protected $environmentConfigurationReader;
16
17
    public function __construct(
18
        ConfigurationReader $configurationReader,
19
        ClassConfigurationReader $classConfigurationReader,
20
        EnvironmentConfigurationReader $environmentConfigurationReader,
21
        $configurationDir = null)
22
    {
23
        $this->configurationReader = $configurationReader;
24
        $this->classConfigurationReader = $classConfigurationReader;
25
        $this->environmentConfigurationReader = $environmentConfigurationReader;
26
        $this->configurationDir = $configurationDir;
27
        if ($this->configurationDir !== null && realpath($this->configurationDir) !== false) {
28
            $this->classConfigurationReader->setConfigurationDir($this->configurationDir);
29
        }
30
    }
31
32
    public function configureDi(Di $di)
33
    {
34
        $di->instanceManager()->addSharedInstance($this->configurationReader,               get_class($this->configurationReader));
35
        $di->instanceManager()->addSharedInstance($this->classConfigurationReader,          get_class($this->classConfigurationReader));
36
        $di->instanceManager()->addSharedInstance($this->environmentConfigurationReader,    get_class($this->environmentConfigurationReader));
37
        $di->instanceManager()->addSharedInstance($this,                                    get_class($this));
38
    }
39
40
    public function configureObject(ConfigurableObjectInterface $obj)
41
    {
42
        $this->classConfigurationReader->configure($obj);
43
44
        $this->configurationReader->configure($obj);
45
46
        $this->environmentConfigurationReader->configure($obj);
47
    }
48
49
}