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

Container::getClassName()   A

Complexity

Conditions 3
Paths 4

Size

Total Lines 7
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 12

Importance

Changes 4
Bugs 0 Features 1
Metric Value
c 4
b 0
f 1
dl 0
loc 7
ccs 0
cts 5
cp 0
rs 9.4285
cc 3
eloc 5
nc 4
nop 1
crap 12
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