Completed
Push — master ( 68250e...501a81 )
by Muhammad Kashif
23:17
created

ConfigFileServiceFactory   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 38
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 1

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
wmc 4
c 0
b 0
f 0
lcom 0
cbo 1
dl 0
loc 38
ccs 14
cts 14
cp 1
rs 10

2 Methods

Rating   Name   Duplication   Size   Complexity  
A resolveArguments() 0 10 2
A create() 0 13 2
1
<?php
2
3
namespace Gr8abbasi\Container\Factory;
4
5
use Gr8abbasi\Container\Container;
6
use Gr8abbasi\Container\Factory\ServiceFactoryInterface;
7
8
/**
9
 * ConfigFileServiceFactory
10
 */
11
class ConfigFileServiceFactory implements ServiceFactoryInterface
12
{
13
    /**
14
     * Resolve the service arguments
15
     *
16
     * @param array $serviceArguments
17
     * @param Container $container
18
     *
19
     * @return mixed $service
20
     */
21 2
    private function resolveArguments($serviceArguments, Container $container)
22
    {
23 2
        $arguments = [];
24
25 2
        foreach ($serviceArguments as $argument) {
26 2
            $arguments[] = $container->get($argument);
27 2
        }
28
29 2
        return $arguments;
30
    }
31
32
    /**
33
     * @inheritdoc
34
     */
35 2
    public function create($service, Container $container)
36
    {
37 2
        $class = new \ReflectionClass($service['class']);
38
39 2
        $arguments = isset($service['arguments'])? $service['arguments'] : [] ;
40
41 2
        return $class->newInstanceArgs(
42 2
            $this->resolveArguments(
43 2
                $arguments,
44
                $container
45 2
            )
46 2
        );
47
    }
48
}
49