DataConverter::convertFrom()   A
last analyzed

Complexity

Conditions 2
Paths 2

Size

Total Lines 14
Code Lines 7

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 7
CRAP Score 2.0078

Importance

Changes 0
Metric Value
cc 2
eloc 7
nc 2
nop 1
dl 0
loc 14
ccs 7
cts 8
cp 0.875
crap 2.0078
rs 10
c 0
b 0
f 0
1
<?php
2
declare(strict_types=1);
3
4
5
namespace Xervice\Redis\Business\Model\Converter;
6
7
8
use Xervice\DataProvider\Business\Model\DataProvider\DataProviderInterface;
9
use Xervice\Redis\Business\Exception\ConverterException;
10
11
class DataConverter implements DataConverterInterface
12
{
13
    /**
14
     * @param \Xervice\DataProvider\Business\Model\DataProvider\DataProviderInterface $dataProvider
15
     *
16
     * @return string
17
     */
18 6
    public function convertTo(DataProviderInterface $dataProvider): string
19
    {
20 6
        return json_encode(
21
            [
22 6
                'class' => \get_class($dataProvider),
23 6
                'data'  => $dataProvider->toArray()
24
            ]
25
        );
26
    }
27
28
    /**
29
     * @param string $data
30
     *
31
     * @return \Xervice\DataProvider\Business\Model\DataProvider\DataProviderInterface
32
     * @throws \Xervice\Redis\Business\Exception\ConverterException
33
     */
34 2
    public function convertFrom(string $data): DataProviderInterface
35
    {
36 2
        $data = json_decode($data, true);
37
38 2
        if (!isset($data['data'], $data['class'])) {
39
            throw new ConverterException('Data have wrong format to convert (No class or data field)');
40
        }
41
42 2
        $provider = $data['class'];
43
44 2
        $provider = $this->createDataProvider($provider);
45 2
        $provider->fromArray($data['data']);
46
47 2
        return $provider;
48
    }
49
50
    /**
51
     * @param string $provider
52
     *
53
     * @return \Xervice\DataProvider\Business\Model\DataProvider\DataProviderInterface
54
     */
55 2
    private function createDataProvider(string $provider): DataProviderInterface
56
    {
57 2
        $provider = new $provider();
58 2
        return $provider;
59
    }
60
}
61