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

DataConverter::convertTo()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 5

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 4
CRAP Score 1

Importance

Changes 0
Metric Value
cc 1
nc 1
nop 1
dl 0
loc 5
ccs 4
cts 4
cp 1
crap 1
rs 10
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
}