Passed
Push — master ( 859573...a81ea2 )
by Gabriel
03:21
created

HasLoaderTrait::setLoaderClass()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 5
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 4
CRAP Score 1

Importance

Changes 0
Metric Value
cc 1
eloc 3
c 0
b 0
f 0
nc 1
nop 1
dl 0
loc 5
ccs 4
cts 4
cp 1
crap 1
rs 10
1
<?php
2
3
namespace ByTIC\MediaLibrary\Loaders;
4
5
/**
6
 * Trait HasLoaderTrait.
7
 */
8
trait HasLoaderTrait
9
{
10
    /**
11
     * @var AbstractLoader
12
     */
13
    protected $loader = null;
14
15
    /**
16
     * @return AbstractLoader
17
     */
18 7
    public function getLoader(): AbstractLoader
19
    {
20 7
        if ($this->loader == null) {
21
            $this->initLoader();
22
        }
23
24 7
        return $this->loader;
25
    }
26
27
    /**
28
     * @param string $loader
29
     */
30 7
    public function setLoaderClass($loader)
31
    {
32 7
        $loader = new $loader();
33 7
        $loader = $this->hydrateLoader($loader);
34 7
        $this->setLoader($loader);
35 7
    }
36
37
    /**
38
     * @param AbstractLoader $loader
39
     */
40 7
    public function setLoader(AbstractLoader $loader)
41
    {
42 7
        $this->loader = $loader;
43 7
    }
44
45
    protected function initLoader()
46
    {
47
        $loader = $this->newLoader();
48
        $loader = $this->hydrateLoader($loader);
49
        $this->setLoader($loader);
50
    }
51
52
    /**
53
     * @param AbstractLoader $loader
54
     *
55
     * @return AbstractLoader
56
     */
57
    protected function hydrateLoader($loader)
58
    {
59
        return $loader;
60
    }
61
62
    /**
63
     * @return AbstractLoader
64
     */
65
    protected function newLoader()
66
    {
67
        $class = $this->getLoaderClass();
68
        $loader = new $class();
69
70
        return $loader;
71
    }
72
73
    abstract protected function getLoaderClass();
74
}
75