Completed
Push — master ( 69e2c3...3de1cd )
by JHONATAN
02:37
created

SerializerFactory::createSerialzer()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 15
Code Lines 7

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 8
CRAP Score 1

Importance

Changes 0
Metric Value
dl 0
loc 15
ccs 8
cts 8
cp 1
rs 9.4285
c 0
b 0
f 0
cc 1
eloc 7
nc 1
nop 2
crap 1
1
<?php
2
3
namespace Vox\Serializer\Factory;
4
5
use Metadata\MetadataFactoryInterface;
6
use Symfony\Component\Serializer\Encoder\JsonEncoder;
7
use Symfony\Component\Serializer\Encoder\XmlEncoder;
8
use Symfony\Component\Serializer\Normalizer\DateTimeNormalizer;
9
use Symfony\Component\Serializer\Serializer;
10
use Symfony\Component\Serializer\SerializerInterface;
11
use Vox\Data\ObjectHydrator;
12
use Vox\Serializer\Denormalizer;
13
use Vox\Serializer\Normalizer;
14
use Vox\Serializer\ObjectNormalizer;
15
16
class SerializerFactory
17
{
18 4
    public function createSerialzer(
19
        MetadataFactoryInterface $metadataFactory,
20
        string $dateFormat = 'Y-m-d H:i:s'
21
    ): SerializerInterface {
22 4
        return new Serializer(
23
            [
24 4
                new ObjectNormalizer(
25 4
                    new Normalizer($metadataFactory),
26 4
                    new Denormalizer(new ObjectHydrator($metadataFactory))
27
                ),
28 4
                new DateTimeNormalizer($dateFormat)
29
            ], 
30
            [
31 4
                new JsonEncoder(),
32 4
                new XmlEncoder()
33
            ]
34
        );
35
    }
36
}
37