Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
50.00% covered (danger)
50.00%
3 / 6
0.00% covered (danger)
0.00%
0 / 1
CRAP
0.00% covered (danger)
0.00%
0 / 1
DateIntervalConverter
50.00% covered (danger)
50.00%
3 / 6
0.00% covered (danger)
0.00%
0 / 1
6.00
0.00% covered (danger)
0.00%
0 / 1
 read
50.00% covered (danger)
50.00%
3 / 6
0.00% covered (danger)
0.00%
0 / 1
6.00
1<?php
2
3declare(strict_types=1);
4
5namespace PeServer\Core\Serialization\Converter;
6
7use DateInterval;
8use DateTime;
9use DateTimeImmutable;
10use DateTimeInterface;
11use Error;
12use PeServer\Core\Text;
13use PeServer\Core\Throws\InvalidOperationException;
14use PeServer\Core\Time;
15use ReflectionNamedType;
16
17
18/**
19 * @extends TypeConverterBase<DateInterval|null>
20 */
21class DateIntervalConverter extends TypeConverterBase
22{
23    #region TypeConverterBase
24
25    public function read(string $name, ReflectionNamedType $type, mixed $raw): DateInterval|DateTimeInterface|null
26    {
27        $targetClassName = $type->getName();
28
29        if (is_string($raw) && !Text::isNullOrWhiteSpace($raw)) {
30            return Time::create($raw);
31        }
32
33        if ($type->allowsNull()) {
34            return null;
35        }
36
37        throw new InvalidOperationException("$name$targetClassName");
38    }
39
40    #endregion
41}