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

DataConverter   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 35
Duplicated Lines 0 %

Test Coverage

Coverage 91.67%

Importance

Changes 0
Metric Value
dl 0
loc 35
ccs 11
cts 12
cp 0.9167
rs 10
c 0
b 0
f 0
wmc 4

2 Methods

Rating   Name   Duplication   Size   Complexity  
A convertFrom() 0 14 3
A convertTo() 0 5 1
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
}