Completed
Push — master ( 51adb9...d81eba )
by Dominik
03:44
created

DateFieldDenormalizer::denormalizeField()   A

Complexity

Conditions 4
Paths 3

Size

Total Lines 21
Code Lines 14

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 9
CRAP Score 4

Importance

Changes 0
Metric Value
dl 0
loc 21
ccs 9
cts 9
cp 1
rs 9.0534
c 0
b 0
f 0
cc 4
eloc 14
nc 3
nop 5
crap 4
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Chubbyphp\Deserialization\Denormalizer;
6
7
use Chubbyphp\Deserialization\DeserializerRuntimeException;
8
9
final class DateFieldDenormalizer implements FieldDenormalizerInterface
10
{
11
    /**
12
     * @var FieldDenormalizerInterface
13
     */
14
    private $fieldDenormalizer;
15
16
    /**
17
     * @param FieldDenormalizerInterface $fieldDenormalizer
18
     */
19 10
    public function __construct(FieldDenormalizerInterface $fieldDenormalizer)
20
    {
21 10
        $this->fieldDenormalizer = $fieldDenormalizer;
22 10
    }
23
24
    /**
25
     * @param string                       $path
26
     * @param object                       $object
27
     * @param mixed                        $value
28
     * @param DenormalizerContextInterface $context
29
     * @param DenormalizerInterface|null   $denormalizer
30
     *
31
     * @throws DeserializerRuntimeException
32
     */
33 10
    public function denormalizeField(
34
        string $path,
35
        $object,
36
        $value,
37
        DenormalizerContextInterface $context,
38
        DenormalizerInterface $denormalizer = null
39
    ) {
40 10
        if (!is_string($value) || '' === $trimmedValue = trim($value)) {
41 6
            $this->fieldDenormalizer->denormalizeField($path, $object, $value, $context, $denormalizer);
42
43 6
            return;
44
        }
45
46
        try {
47 4
            $value = new \DateTime($trimmedValue);
48 3
        } catch (\Exception $exception) {
49 3
            error_clear_last();
50
        }
51
52 4
        $this->fieldDenormalizer->denormalizeField($path, $object, $value, $context, $denormalizer);
53 4
    }
54
}
55