AbstractSerializer::make()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 4
rs 10
c 0
b 0
f 0
cc 1
eloc 2
nc 1
nop 0
1
<?php
2
3
namespace Realshadow\RequestDeserializer\Serializers;
4
5
use Illuminate\Config\Repository;
6
use JMS\Serializer\Serializer;
7
use JMS\Serializer\SerializerBuilder;
8
use Realshadow\RequestDeserializer\Providers\LaravelServiceProvider;
9
10
11
/**
12
 * Class AbstractSerializer
13
 *
14
 * @package Realshadow\RequestDeserializer\Serializers
15
 * @author Lukáš Homza <[email protected]>
16
 */
17
class AbstractSerializer
18
{
19
20
    /**
21
     * JMS serializer builder
22
     *
23
     * @var SerializerBuilder $builder
24
     */
25
    protected $builder;
26
27
    /**
28
     * AbstractSerializer constructor
29
     *
30
     * Builder is initialized with debug and cache setup depending on provided configuration
31
     * and with default listeners and handlers
32
     */
33
    public function __construct()
34
    {
35
        /** @var \Illuminate\Config\Repository $config */
36
        $config = app(Repository::class);
37
38
        $this->builder = SerializerBuilder::create()
39
            ->setDebug($config->get('app.debug'))
40
            ->addDefaultHandlers()
41
            ->addDefaultListeners();
42
43
        $cache = $config->get(LaravelServiceProvider::CONFIG_KEY . '.serializer.cache');
44
        if ($cache) {
45
            $this->builder->setCacheDir($cache);
46
        }
47
    }
48
49
    /**
50
     * Gets the builder instance
51
     *
52
     * @return SerializerBuilder
53
     */
54
    public function getBuilderInstance()
55
    {
56
        return $this->builder;
57
    }
58
59
    /**
60
     * Builds the serializer
61
     *
62
     * @return Serializer
63
     */
64
    public function make()
65
    {
66
        return $this->builder->build();
67
    }
68
69
}
70