SerializerHelper::deserialize()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 4
rs 10
c 0
b 0
f 0
cc 1
nc 1
nop 3
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
}