BuilderService   A
last analyzed

Complexity

Total Complexity 15

Size/Duplication

Total Lines 80
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 2

Test Coverage

Coverage 0%

Importance

Changes 1
Bugs 0 Features 1
Metric Value
wmc 15
c 1
b 0
f 1
lcom 0
cbo 2
dl 0
loc 80
ccs 0
cts 46
cp 0
rs 10

3 Methods

Rating   Name   Duplication   Size   Complexity  
F __invoke() 0 47 11
A setSerializationVisitors() 0 8 2
A setDeserializationVisitors() 0 8 2
1
<?php
2
3
namespace JDesrosiers\Silex\Provider;
4
5
use JMS\Serializer\SerializerBuilder;
6
use Pimple\Container;
7
8
class BuilderService
9
{
10
    public function __invoke(Container $app) {
11
        $serializerBuilder = SerializerBuilder::create();
12
13
        if ($app->offsetExists("debug")) {
14
            $serializerBuilder->setDebug($app["debug"]);
15
        }
16
17
        if ($app->offsetExists("serializer.annotationReader")) {
18
            $serializerBuilder->setAnnotationReader($app["serializer.annotationReader"]);
19
        }
20
21
        if ($app->offsetExists("serializer.cacheDir")) {
22
            $serializerBuilder->setCacheDir($app["serializer.cacheDir"]);
23
        }
24
25
        if ($app->offsetExists("serializer.configureHandlers")) {
26
            $serializerBuilder->configureHandlers($app["serializer.configureHandlers"]);
27
        }
28
29
        if ($app->offsetExists("serializer.configureListeners")) {
30
            $serializerBuilder->configureListeners($app["serializer.configureListeners"]);
31
        }
32
33
        if ($app->offsetExists("serializer.objectConstructor")) {
34
            $serializerBuilder->setObjectConstructor($app["serializer.objectConstructor"]);
35
        }
36
37
        $serializerBuilder->setPropertyNamingStrategy($app["serializer.propertyNamingStrategy"]);
38
39
        if ($app->offsetExists("serializer.serializationVisitors")) {
40
            $this->setSerializationVisitors($app, $serializerBuilder);
41
        }
42
43
        if ($app->offsetExists("serializer.deserializationVisitors")) {
44
            $this->setDeserializationVisitors($app, $serializerBuilder);
45
        }
46
47
        if ($app->offsetExists("serializer.includeInterfaceMetadata")) {
48
            $serializerBuilder->includeInterfaceMetadata($app["serializer.includeInterfaceMetadata"]);
49
        }
50
51
        if ($app->offsetExists("serializer.metadataDirs")) {
52
            $serializerBuilder->setMetadataDirs($app["serializer.metadataDirs"]);
53
        }
54
55
        return $serializerBuilder;
56
    }
57
58
    /**
59
     * Override default serialization vistors
60
     *
61
     * @param Container $app
62
     * @param SerializerBuilder $serializerBuilder
63
     */
64
    protected function setSerializationVisitors(Container $app, SerializerBuilder $serializerBuilder)
65
    {
66
        $serializerBuilder->addDefaultSerializationVisitors();
67
68
        foreach ($app["serializer.serializationVisitors"] as $format => $visitor) {
69
            $serializerBuilder->setSerializationVisitor($format, $visitor);
70
        }
71
    }
72
73
    /**
74
     * Override default deserialization visitors
75
     *
76
     * @param Container $app
77
     * @param SerializerBuilder $serializerBuilder
78
     */
79
    protected function setDeserializationVisitors(Container $app, SerializerBuilder $serializerBuilder)
80
    {
81
        $serializerBuilder->addDefaultDeserializationVisitors();
82
83
        foreach ($app["serializer.deserializationVisitors"] as $format => $visitor) {
84
            $serializerBuilder->setDeserializationVisitor($format, $visitor);
85
        }
86
    }
87
}
88