Loader   A
last analyzed

Complexity

Total Complexity 5

Size/Duplication

Total Lines 41
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 2

Importance

Changes 0
Metric Value
wmc 5
lcom 1
cbo 2
dl 0
loc 41
rs 10
c 0
b 0
f 0

3 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 5 1
A load() 0 7 2
A loadPlugin() 0 20 2
1
<?php
2
3
namespace Padawan\Plugin;
4
5
use DI\Container;
6
7
class Loader
8
{
9
    public function __construct(Package $package, Container $container)
10
    {
11
        $this->package = $package;
12
        $this->container = $container;
13
    }
14
    public function load()
15
    {
16
        $plugins = $this->package->getPluginsList();
17
        foreach ($plugins as $pluginName) {
18
            $this->loadPlugin($pluginName);
19
        }
20
    }
21
    public function loadPlugin($pluginName)
22
    {
23
        $parts = explode("/", $pluginName);
24
        $className = implode("\\", array_map(function($part) {
25
            return implode("", array_map(
26
                function($part) {
27
                    return ucfirst($part);
28
                },
29
                explode("-", $part)
30
            ));
31
        }, $parts));
32
        $className .= "\\" . $this->pluginClassName;
33
        try {
34
            /** @var \Padawan\Plugin\PluginInterface */
35
            $plugin = $this->container->get($className);
36
            $plugin->init();
37
        } catch (\Exception $e) {
38
            printf("Plugin Error: %s\n", $e->getMessage());
39
        }
40
    }
41
42
    private $pluginClassName = "Plugin";
43
    /** @var Package */
44
    private $package;
45
    /** @var Container */
46
    private $container;
47
}
48