SimpleLoader::setDataLoadCallback()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 2
nc 1
nop 1
dl 0
loc 4
rs 10
c 0
b 0
f 0
1
<?php
2
3
namespace Alex19pov31\LinkedData\Loaders;
4
5
use Alex19pov31\LinkedData\LoaderInterface;
6
use Alex19pov31\LinkedData\Storage;
7
8
class SimpleLoader implements LoaderInterface
9
{
10
    /**
11
     * Функция для получения данных
12
     *
13
     * @var callable|null
14
     */
15
    private $dataLoadCallback;
16
17
    /**
18
     * Функция для получения элемента
19
     *
20
     * @var callable|null
21
     */
22
    private $itemLoadCallback;
23
24
    /**
25
     * Undocumented variable
26
     *
27
     * @var string
28
     */
29
    private $repositoryName;
30
31
    public function __construct(string $repositoryName, $storage = null)
32
    {
33
        $this->repositoryName = $repositoryName;
34
        $storageClass = !is_null($storage) ? $storage : Storage::class;
35
        $storageClass::getRepository($this->repositoryName)
36
            ->setLoaderData($this);
37
    }
38
39
    /**
40
     * Загрузчик данных
41
     *
42
     * @param callable $dataLoadCallback
43
     * @return SimpleLoader
44
     */
45
    public function setDataLoadCallback(callable $dataLoadCallback): SimpleLoader
46
    {
47
        $this->dataLoadCallback = $dataLoadCallback;
48
        return $this;
49
    }
50
51
    /**
52
     * Загрузчик элемента
53
     *
54
     * @param callable $itemLoadCallback
55
     * @return SimpleLoader
56
     */
57
    public function setItemLoadCallback(callable $itemLoadCallback): SimpleLoader
58
    {
59
        $this->itemLoadCallback = $itemLoadCallback;
60
        return $this;
61
    }
62
63
    /**
64
     * Возвращает данные
65
     *
66
     * @return array
67
     */
68
    public function getData(): array
69
    {
70
        if (is_null($this->dataLoadCallback)) {
71
            return [];
72
        }
73
74
        $func = $this->dataLoadCallback;
75
        return (array) $func();
76
    }
77
78
    /**
79
     * Возвращает элемент по ключу
80
     *
81
     * @param mixed $key
82
     * @return mixed
83
     */
84
    public function getItem($key)
85
    {
86
        if (is_null($this->itemLoadCallback)) {
87
            return [];
88
        }
89
90
        $func = $this->itemLoadCallback;
91
        return (array) $func($key);
92
    }
93
}
94