Completed
Push — master ( c5de01...c9c19d )
by
unknown
07:34 queued 05:10
created

Initializer::initialize()   B

Complexity

Conditions 6
Paths 17

Size

Total Lines 19
Code Lines 11

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 19
rs 8.8571
c 0
b 0
f 0
cc 6
eloc 11
nc 17
nop 2
1
<?php
2
3
namespace Coduo\TuTu\Extension;
4
5
use Coduo\TuTu\Extension;
6
use Symfony\Component\ClassLoader\ClassLoader;
7
8
class Initializer
9
{
10
    /**
11
     * @var \Symfony\Component\ClassLoader\ClassLoader
12
     */
13
    private $classLoader;
14
15
    /**
16
     * @param ClassLoader $classLoader
17
     */
18
    public function __construct(ClassLoader $classLoader)
19
    {
20
        $this->classLoader = $classLoader;
21
    }
22
23
    public function initialize($extensionClass, $args = null)
24
    {
25
        if (!class_exists($extensionClass)) {
26
            if (true !== $this->classLoader->loadClass($extensionClass)) {
27
                throw new \InvalidArgumentException(sprintf("%s is not valid class.", $extensionClass));
28
            }
29
        }
30
31
        $extensionReflection = new \ReflectionClass($extensionClass);
32
        $extension = (is_array($args) && !empty($args))
33
            ? $extensionReflection->newInstanceArgs($args)
34
            : $extensionReflection->newInstance();
35
36
        if (!$extension instanceof Extension) {
37
            throw new \InvalidArgumentException(sprintf("Class \"%s\" should be an instance of Coduo\\TuTu\\Extension", $extensionClass));
38
        }
39
40
        return $extension;
41
    }
42
}
43