Completed
Push — master ( d8f6dd...8bb41b )
by Vitaly
03:19 queued 01:08
created

Container::parseClassDependencies()   B

Complexity

Conditions 6
Paths 6

Size

Total Lines 21
Code Lines 13

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 42

Importance

Changes 2
Bugs 1 Features 0
Metric Value
c 2
b 1
f 0
dl 0
loc 21
ccs 0
cts 13
cp 0
rs 8.7624
cc 6
eloc 13
nc 6
nop 4
crap 42
1
<?php
2
/**
3
 * Created by Vitaly Iegorov <[email protected]>.
4
 * on 26.01.16 at 15:11
5
 */
6
namespace samsonframework\di;
7
8
/**
9
 * Dependency container.
10
 *
11
 * @author Vitaly Iegorov <[email protected]>
12
 */
13
class Container extends AbstractContainer
14
{
15
    /** @var array[string] Collection of loaded services */
16
    protected $services = array();
17
18
    /**
19
     * Set service dependency. Upon first creation of this class instance
20
     * it would be used everywhere where this dependency is needed.
21
     *
22
     * @param string $className  Fully qualified class name
23
     * @param string $alias      Dependency name
24
     * @param array  $parameters Collection of parameters needed for dependency creation
25
     *
26
     * @return Container Chaining
27
     */
28
    public function service($className, $alias = null, array $parameters = array())
29
    {
30
        $this->services[$className] = $className;
31
32
        return $this->set($className, $alias, $parameters);
33
    }
34
35
    /**
36
     * Set dependency.
37
     *
38
     * @param string $className  Fully qualified class name
39
     * @param string $alias      Dependency name
40
     * @param array  $parameters Collection of parameters needed for dependency creation
41
     *
42
     * @return Container Chaining
43
     */
44
    public function set($className, $alias = null, array $parameters = array())
45
    {
46
        // Merge other class constructor parameters
47
        $this->dependencies[$className] = array_merge($this->dependencies[$className], $parameters);
48
49
        // Store alias for this class name
50
        $this->aliases[$className] = $alias;
51
    }
52
}
53