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

HasLoaderTrait   A

Complexity

Total Complexity 7

Size/Duplication

Total Lines 66
Duplicated Lines 0 %

Test Coverage

Coverage 47.83%

Importance

Changes 2
Bugs 1 Features 1
Metric Value
eloc 16
c 2
b 1
f 1
dl 0
loc 66
ccs 11
cts 23
cp 0.4783
rs 10
wmc 7

6 Methods

Rating   Name   Duplication   Size   Complexity  
A hydrateLoader() 0 3 1
A newLoader() 0 6 1
A setLoader() 0 3 1
A getLoader() 0 7 2
A initLoader() 0 5 1
A setLoaderClass() 0 5 1
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