Completed
Pull Request — master (#971)
by
unknown
23:34 queued 12:27
created

Callback   A

Complexity

Total Complexity 15

Size/Duplication

Total Lines 59
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 1

Test Coverage

Coverage 86.36%

Importance

Changes 3
Bugs 0 Features 0
Metric Value
wmc 15
c 3
b 0
f 0
lcom 1
cbo 1
dl 0
loc 59
ccs 19
cts 22
cp 0.8636
rs 10

5 Methods

Rating   Name   Duplication   Size   Complexity  
A setSerializer() 0 7 2
A setGroups() 0 8 3
A setVersion() 0 8 3
A setSerializeNull() 0 8 3
A serialize() 0 16 4
1
<?php
2
3
namespace FOS\ElasticaBundle\Serializer;
4
5
use JMS\Serializer\SerializationContext;
6
use JMS\Serializer\SerializerInterface;
7
8
class Callback
9
{
10
    protected $serializer;
11
    protected $groups = array();
12
    protected $version;
13
    protected $serializeNull;
14 1
15
    public function setSerializer($serializer)
16 1
    {
17 1
        $this->serializer = $serializer;
18
        if (!method_exists($this->serializer, 'serialize')) {
19
            throw new \RuntimeException('The serializer must have a "serialize" method.');
20 1
        }
21
    }
22 1
23
    public function setGroups(array $groups)
24 1
    {
25
        $this->groups = $groups;
26 1
27
        if (!empty($this->groups) && !$this->serializer instanceof SerializerInterface) {
28
            throw new \RuntimeException('Setting serialization groups requires using "JMS\Serializer\Serializer".');
29 1
        }
30
    }
31 1
32
    public function setVersion($version)
33 1
    {
34
        $this->version = $version;
35 1
36
        if ($this->version && !$this->serializer instanceof SerializerInterface) {
37
            throw new \RuntimeException('Setting serialization version requires using "JMS\Serializer\Serializer".');
38 1
        }
39
    }
40 1
41
    public function setSerializeNull($serializeNull)
42 1
    {
43
        $this->serializeNull = $serializeNull;
44 1
45 1
        if (true === $this->serializeNull && !$this->serializer instanceof SerializerInterface) {
46
            throw new \RuntimeException('Setting null value serialization option requires using "JMS\Serializer\Serializer".');
47
        }
48 1
    }
49 1
50
    public function serialize($object)
51
    {
52 1
        $context = $this->serializer instanceof SerializerInterface ? SerializationContext::create()->enableMaxDepthChecks() : array();
53
54
        if (!empty($this->groups)) {
55
            $context->setGroups($this->groups);
56
        }
57
58
        if ($this->version) {
59
            $context->setVersion($this->version);
60
        }
61
62
        $context->setSerializeNull($this->serializeNull);
63
64
        return $this->serializer->serialize($object, 'json', $context);
65
    }
66
}
67