SerializerFactory::create()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 17
Code Lines 11

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 12
CRAP Score 1

Importance

Changes 2
Bugs 0 Features 1
Metric Value
c 2
b 0
f 1
dl 0
loc 17
ccs 12
cts 12
cp 1
rs 9.4285
cc 1
eloc 11
nc 1
nop 0
crap 1
1
<?php
2
namespace Wonnova\SDK\Serializer;
3
4
use Doctrine\Common\Annotations\AnnotationRegistry;
5
use JMS\Serializer\Handler\HandlerRegistry;
6
use JMS\Serializer\Naming\IdenticalPropertyNamingStrategy;
7
use JMS\Serializer\Naming\SerializedNameAnnotationStrategy;
8
use JMS\Serializer\SerializerBuilder;
9
10
/**
11
 * Class SerializerFactory
12
 * @author Wonnova
13
 * @link http://www.wonnova.com
14
 */
15
class SerializerFactory
16
{
17
    /**
18
     * @return \JMS\Serializer\Serializer
19
     */
20 43
    public static function create()
21
    {
22
        // This makes annotations autoloading work with existing annotation classes
23 43
        AnnotationRegistry::registerLoader('class_exists');
24
25 43
        $propertyNamingStrategy = new SerializedNameAnnotationStrategy(new IdenticalPropertyNamingStrategy());
26
27 43
        return SerializerBuilder::create()
28 43
            ->setPropertyNamingStrategy($propertyNamingStrategy)
29 43
            ->addDefaultDeserializationVisitors()
30 43
            ->addDefaultSerializationVisitors()
31 43
            ->setDeserializationVisitor('array', new ArrayDeserializationVisitor($propertyNamingStrategy))
32 43
            ->configureHandlers(function (HandlerRegistry $registry) {
33 43
                $registry->registerSubscribingHandler(new DateTimeHandler());
34 43
            })
35 43
            ->build();
36
    }
37
}
38