Completed
Push — master ( c2ba48...1fd225 )
by Markus
14s queued 12s
created

SerializerSymfonyServiceProvider   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 48
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
wmc 3
eloc 16
dl 0
loc 48
rs 10
c 0
b 0
f 0

3 Methods

Rating   Name   Duplication   Size   Complexity  
A createSymfonySerializer() 0 15 1
A createSerializer() 0 11 1
A register() 0 3 1
1
<?php
2
3
namespace Jellyfish\SerializerSymfony;
4
5
use Pimple\Container;
6
use Pimple\ServiceProviderInterface;
7
use Symfony\Component\PropertyInfo\Extractor\ReflectionExtractor;
8
use Symfony\Component\Serializer\Encoder\JsonEncoder;
9
use Symfony\Component\Serializer\Encoder\XmlEncoder;
10
use Symfony\Component\Serializer\Normalizer\ArrayDenormalizer;
11
use Symfony\Component\Serializer\Normalizer\ObjectNormalizer;
12
use Symfony\Component\Serializer\Serializer as SymfonySerializer;
13
use Symfony\Component\Serializer\SerializerInterface as SymfonySerializerInterface;
14
15
class SerializerSymfonyServiceProvider implements ServiceProviderInterface
16
{
17
    /**
18
     * @param \Pimple\Container $pimple
19
     *
20
     * @return void
21
     */
22
    public function register(Container $pimple): void
23
    {
24
        $this->createSerializer($pimple);
25
    }
26
27
    /**
28
     * @param \Pimple\Container $container
29
     *
30
     * @return \Pimple\ServiceProviderInterface
31
     */
32
    protected function createSerializer(Container $container): ServiceProviderInterface
33
    {
34
        $self = $this;
35
36
        $container->offsetSet('serializer', function () use ($self) {
37
            return new Serializer(
38
                $self->createSymfonySerializer()
39
            );
40
        });
41
42
        return $this;
43
    }
44
45
    /**
46
     * @return \Symfony\Component\Serializer\SerializerInterface
47
     */
48
    protected function createSymfonySerializer(): SymfonySerializerInterface
49
    {
50
        $normalizer = [
51
            new ObjectNormalizer(null, null, null, new ReflectionExtractor()),
52
            new ArrayDenormalizer()
53
        ];
54
55
        $encoders = [
56
            new JsonEncoder(),
57
            new XmlEncoder()
58
        ];
59
60
        return new SymfonySerializer(
61
            $normalizer,
62
            $encoders
63
        );
64
    }
65
}
66