SerializerHelper   A
last analyzed

Complexity

Total Complexity 7

Size/Duplication

Total Lines 76
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 7

Importance

Changes 0
Metric Value
wmc 7
lcom 1
cbo 7
dl 0
loc 76
rs 10
c 0
b 0
f 0

5 Methods

Rating   Name   Duplication   Size   Complexity  
A getInstance() 0 21 3
A deserialize() 0 4 1
A denormalize() 0 4 1
A serialize() 0 4 1
A toArray() 0 4 1
1
<?php
2
3
namespace Integracao\ControlPay\Helpers;
4
5
use JMS\Serializer\Naming\IdenticalPropertyNamingStrategy;
6
use JMS\Serializer\Naming\SerializedNameAnnotationStrategy;
7
use JMS\Serializer\SerializerBuilder;
8
9
use Symfony\Component\Serializer\Encoder\JsonEncoder;
10
use Symfony\Component\Serializer\Encoder\XmlEncoder;
11
use Symfony\Component\Serializer\Normalizer\ObjectNormalizer;
12
use Symfony\Component\Serializer\Serializer;
13
14
/**
15
 *
16
 * Class SerializerHelper
17
 * @package App\Helpers
18
 */
19
class SerializerHelper
20
{
21
    /**
22
     * @var \JMS\Serializer\Serializer
23
     */
24
    private static $instance;
25
26
    /**
27
     * @return Serializer
28
     */
29
    private static function getInstance()
30
    {
31
        if(empty(self::$instance['jms.serializer']))
32
        {
33
            self::$instance['jms.serializer'] = SerializerBuilder::create()
34
                ->setPropertyNamingStrategy(new SerializedNameAnnotationStrategy(new IdenticalPropertyNamingStrategy()))
35
                ->build();
36
        }
37
38
        if(empty(self::$instance['symfony.serializer']))
39
        {
40
            self::$instance['symfony.serializer'] = new Serializer([new ObjectNormalizer()],
41
                [
42
                    'xml' => new XmlEncoder(),
43
                    'json' => new JsonEncoder()
44
                ]
45
            );
46
        }
47
48
        return self::$instance;
49
    }
50
51
    /**
52
     * Deserializa json em objeto
53
     *
54
     * @param $data
55
     * @param $class
56
     * @return object
57
     */
58
    public static function deserialize($data, $class, $format = 'json')
59
    {
60
        return self::getInstance()['symfony.serializer']->deserialize($data, $class, $format);
61
    }
62
63
    /**
64
     * Deserializa json em objeto
65
     *
66
     * @param $data
67
     * @param $class
68
     * @return object
69
     */
70
    public static function denormalize($data, $class)
71
    {
72
        return self::getInstance()['symfony.serializer']->denormalize($data, $class);
73
    }
74
75
    /**
76
     * @param $data
77
     * @param $format
78
     * @return string|\Symfony\Component\Serializer\Encoder\scalar
79
     */
80
    public static function serialize($data, $format = 'json')
81
    {
82
        return self::getInstance()['jms.serializer']->serialize($data, $format);
83
    }
84
85
    /**
86
     * @param $object
87
     * @return mixed
88
     */
89
    public static function toArray($object)
90
    {
91
        return self::getInstance()['jms.serializer']->toArray($object);
92
    }
93
94
}