Loader::__construct()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 5
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 5
rs 9.4285
c 0
b 0
f 0
cc 1
eloc 3
nc 1
nop 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