Total Complexity | 4 |
Total Lines | 48 |
Duplicated Lines | 0 % |
Coverage | 93.33% |
Changes | 0 |
1 | <?php |
||
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 |
|
59 | } |
||
60 | } |
||
61 |