Manufacturer::__construct()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 8
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 4
CRAP Score 1

Importance

Changes 0
Metric Value
cc 1
eloc 3
nc 1
nop 3
dl 0
loc 8
rs 10
c 0
b 0
f 0
ccs 4
cts 4
cp 1
crap 1
1
<?php
2
/**
3
 * File: Manufacturer.php
4
 *
5
 * @author      Maciej Sławik <[email protected]>
6
 * Github:      https://github.com/maciejslawik
7
 */
8
9
namespace MSlwk\Otomoto\Middleware\App\Manufacturer;
10
11
use MSlwk\Otomoto\App\Manufacturer\Data\ManufacturerDTOArray;
12
use MSlwk\Otomoto\App\Manufacturer\ManufacturerProvider;
13
use MSlwk\Otomoto\Middleware\Cache\Adapter\CacheAdapterInterface;
14
15
/**
16
 * Class Manufacturer
17
 * @package MSlwk\Otomoto\Middleware
18
 */
19
class Manufacturer
20
{
21
    const CACHE_TAG = 'manufacturers';
22
23
    /**
24
     * @var CacheAdapterInterface
25
     */
26
    private $cacheAdapter;
27
28
    /**
29
     * @var ManufacturerProvider
30
     */
31
    private $manufacturerProvider;
32
33
    /**
34
     * @var ManufacturerSerializer
35
     */
36
    private $manufacturerSerializer;
37
38
    /**
39
     * Manufacturer constructor.
40
     * @param CacheAdapterInterface $cacheAdapter
41
     * @param ManufacturerProvider $manufacturerProvider
42
     * @param ManufacturerSerializer $manufacturerSerializer
43
     */
44 3
    public function __construct(
45
        CacheAdapterInterface $cacheAdapter,
46
        ManufacturerProvider $manufacturerProvider,
47
        ManufacturerSerializer $manufacturerSerializer
48
    ) {
49 3
        $this->cacheAdapter = $cacheAdapter;
50 3
        $this->manufacturerProvider = $manufacturerProvider;
51 3
        $this->manufacturerSerializer = $manufacturerSerializer;
52 3
    }
53
54
    /**
55
     * @return ManufacturerDTOArray
56
     */
57 2
    public function getManufacturers(): ManufacturerDTOArray
58
    {
59 2
        $cacheItem = $this->cacheAdapter->retrieve(self::CACHE_TAG);
60 2
        if (!$cacheItem->get()) {
61 1
            $manufacturers = $this->manufacturerProvider->getManufacturers();
62 1
            $cacheItem->set($this->manufacturerSerializer->serialize($manufacturers));
63 1
            $this->cacheAdapter->store($cacheItem);
64 1
            $cacheItem = $this->cacheAdapter->retrieve(self::CACHE_TAG);
65
        }
66
67 2
        return $this->manufacturerSerializer->unserialize($cacheItem->get());
68
    }
69
}
70