Completed
Branch BUG-10626-dst-unit-test (b2e779)
by
unknown
23:16 queued 12:00
created

Loader::setupSharedLoader()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 11
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
eloc 6
nc 2
nop 1
dl 0
loc 11
rs 9.4285
c 0
b 0
f 0

1 Method

Rating   Name   Duplication   Size   Complexity  
A Loader::load() 0 6 2
1
<?php
2
3
namespace EventEspresso\core\services\loaders;
4
5
use EventEspresso\core\exceptions\InvalidDataTypeException;
6
use EventEspresso\core\exceptions\InvalidInterfaceException;
7
use InvalidArgumentException;
8
9
defined('EVENT_ESPRESSO_VERSION') || exit;
10
11
12
13
/**
14
 * Class Loader
15
 * Provides a common interface for generating new or shared instantiations of classes
16
 *
17
 * @package       Event Espresso
18
 * @author        Brent Christensen
19
 * @since         $VID:$
20
 */
21
class Loader implements LoaderInterface
22
{
23
24
25
    /**
26
     * @var LoaderDecoratorInterface $new_loader
27
     */
28
    private $new_loader;
29
30
31
    /**
32
     * @var LoaderDecoratorInterface $shared_loader
33
     */
34
    private $shared_loader;
35
36
37
38
    /**
39
     * Loader constructor.
40
     *
41
     * @param LoaderDecoratorInterface|null $new_loader
42
     * @param LoaderDecoratorInterface|null $shared_loader
43
     * @throws InvalidInterfaceException
44
     * @throws InvalidArgumentException
45
     * @throws InvalidDataTypeException
46
     */
47
    public function __construct(LoaderDecoratorInterface $new_loader, LoaderDecoratorInterface $shared_loader)
48
    {
49
        $this->new_loader = $new_loader;
50
        $this->shared_loader = $shared_loader;
51
    }
52
53
54
55
    /**
56
     * @return LoaderDecoratorInterface
57
     */
58
    public function getNewLoader()
59
    {
60
        return $this->new_loader;
61
    }
62
63
64
65
    /**
66
     * @return LoaderDecoratorInterface
67
     */
68
    public function getSharedLoader()
69
    {
70
        return $this->shared_loader;
71
    }
72
73
74
75
    /**
76
     * @param string $fqcn
77
     * @param array  $arguments
78
     * @param bool   $shared
79
     * @return mixed
80
     */
81
    public function load($fqcn, $arguments = array(), $shared = true)
82
    {
83
        return $shared
84
            ? $this->getSharedLoader()->load($fqcn, $arguments, $shared)
85
            : $this->getNewLoader()->load($fqcn, $arguments, $shared);
86
    }
87
88
89
90
    /**
91
     * @param string $fqcn
92
     * @param array  $arguments
93
     * @return mixed
94
     */
95
    public function getNew($fqcn, $arguments = array())
96
    {
97
        return $this->getNewLoader()->load($fqcn, $arguments, false);
98
    }
99
100
101
102
    /**
103
     * @param string $fqcn
104
     * @param array  $arguments
105
     * @return mixed
106
     */
107
    public function getShared($fqcn, $arguments = array())
108
    {
109
        return $this->getSharedLoader()->load($fqcn, $arguments, true);
110
    }
111
112
113
114
    /**
115
     * calls reset() on loaders if that method exists
116
     */
117
    public function reset()
118
    {
119
        $this->new_loader->reset();
120
        $this->shared_loader->reset();
121
    }
122
123
}
124
// End of file Loader.php
125
// Location: EventEspresso\core\services\loaders/Loader.php
126