Passed
Push — master ( 0b19e6...20f332 )
by Mike
03:05
created

DataConverter::convertFrom()   A

Complexity

Conditions 3
Paths 2

Size

Total Lines 14

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 7
CRAP Score 3.0175

Importance

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