DefaultJsonSerializationContext::__construct()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 3
CRAP Score 1

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 2
c 1
b 0
f 0
nc 1
nop 2
dl 0
loc 4
ccs 3
cts 3
cp 1
crap 1
rs 10
1
<?php
2
/*
3
 * Copyright (c) Nate Brunette.
4
 * Distributed under the MIT License (http://opensource.org/licenses/MIT)
5
 */
6
7
declare(strict_types=1);
8
9
namespace Tebru\Gson\Internal;
10
11
use Tebru\Gson\Context\WriterContext;
12
use Tebru\Gson\JsonSerializationContext;
13
use Tebru\PhpType\TypeToken;
14
15
/**
16
 * Class DefaultJsonSerializationContext
17
 *
18
 * @author Nate Brunette <[email protected]>
19
 */
20
final class DefaultJsonSerializationContext implements JsonSerializationContext
21
{
22
    /**
23
     * @var TypeAdapterProvider
24
     */
25
    private $typeAdapterProvider;
26
    /**
27
     * @var WriterContext
28
     */
29
    private $context;
30
31
    /**
32
     * Constructor
33
     *
34
     * @param TypeAdapterProvider $typeAdapterProvider
35
     * @param WriterContext $context
36
     */
37 1
    public function __construct(TypeAdapterProvider $typeAdapterProvider, WriterContext $context)
38
    {
39 1
        $this->typeAdapterProvider = $typeAdapterProvider;
40 1
        $this->context = $context;
41 1
    }
42
43
    /**
44
     * Delegate serialization of an object. Should never be called with the original object
45
     * as doing so will result in an infinite loop. Should return normalized data.
46
     *
47
     * @param mixed $object
48
     * @return mixed
49
     */
50 1
    public function serialize($object)
51
    {
52 1
        $typeAdapter = $this->typeAdapterProvider->getAdapter(TypeToken::createFromVariable($object));
53
54 1
        return $typeAdapter->write($object, $this->context);
55
    }
56
}
57