Puice::get()   A
last analyzed

Complexity

Conditions 2
Paths 2

Size

Total Lines 8
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 8
rs 9.4285
c 0
b 0
f 0
cc 2
eloc 4
nc 2
nop 2
1
<?php
2
/**
3
 * The base Class and super public Interface of this Library
4
 *
5
 * LICENSE: Free for all
6
 *
7
 * @category   Dependency Injection
8
 * @package    Puice
9
 * @copyright  Copyright (c) 2014 Alwin Mark
10
 * @license    Free
11
 * @link       https://github.com/CansaSCityShuffle/Puice
12
 */
13
14
use Puice\Config;
15
16
/**
17
 * Package Main class
18
 *
19
 * This class will on the one hand be called by the config.inc.php scripts
20
 * and on the other hand used by the EntryPoints as a Config for the
21
 * Genereic Factory
22
 *
23
 * @category   Dependency Injection
24
 * @package    Puice
25
 * @copyright  Copyright (c) 2014 Alwin Mark
26
 */
27
class Puice implements Config
28
{
29
30
    private $_appConfig = null;
31
    private $_entrypointConfig = null;
32
    private $_factory = null;
33
34
35
    /**
36
     * constructs the wonderfull Puice object with two levels of
37
     * Configurations.
38
     *
39
     * @param Puice\Config $appConfig application Level Dependencies
40
     * @param Puice\Config $entrypointConfig entrypoint Level Dependencies
41
     */
42
    public function __construct(Config $appConfig, Config $entrypointConfig)
43
    {
44
        $this->_appConfig = $appConfig;
45
        $this->_entrypointConfig = $entrypointConfig;
46
        $this->_factory = new Puice\Factory($this);
47
    }
48
49
    /**
50
     * Gets a pre defined Dependecy for a specific type and name.
51
     * If there is only one Dependency defined for that Kind of type, the
52
     * name does not matter.
53
     *
54
     * @param string $type currently only ClassNames with Namespaces are
55
     *                     supported
56
     * @param string $name (optional) name of the Dependency. Default is
57
     *                     'default'
58
     *
59
     * @return mixed predefined Dependency
60
     */
61
    public function get($type, $name = 'default')
62
    {
63
        if (null == ($dependency = $this->_entrypointConfig->get($type, $name))) {
64
            $dependency = $this->_appConfig->get($type, $name);
65
        }
66
67
        return $dependency;
68
    }
69
70
    /**
71
     * This is the method doing the magic. You can create every Instance
72
     * with it, as long as the Dependencies were allready defined.
73
     *
74
     * @param string $classType Type of the Dependency as $Namespace.$Classname
75
     * @param string $name Name of the Dpenedency
0 ignored issues
show
Bug introduced by
There is no parameter named $name. Was it maybe removed?

This check looks for PHPDoc comments describing methods or function parameters that do not exist on the corresponding method or function.

Consider the following example. The parameter $italy is not defined by the method finale(...).

/**
 * @param array $germany
 * @param array $island
 * @param array $italy
 */
function finale($germany, $island) {
    return "2:1";
}

The most likely cause is that the parameter was removed, but the annotation was not.

Loading history...
76
     *
77
     * @throws \Exception if some required dependencies could not be found.
78
     */
79
    public function create($classType, $className = 'default')
80
    {
81
        return $this->_factory->create($classType, $className);
82
    }
83
84
}
85