DefaultJsonSerializationContext   A
last analyzed

Complexity

Total Complexity 2

Size/Duplication

Total Lines 35
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 2
eloc 7
c 1
b 0
f 0
dl 0
loc 35
ccs 7
cts 7
cp 1
rs 10

2 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 4 1
A serialize() 0 5 1
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