DateTimeZoneTransformer   A
last analyzed

Complexity

Total Complexity 2

Size/Duplication

Total Lines 14
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 2
eloc 3
dl 0
loc 14
rs 10
c 1
b 0
f 0

2 Methods

Rating   Name   Duplication   Size   Complexity  
A transform() 0 3 1
A getResourceClass() 0 3 1
1
<?php
2
3
require __DIR__ . '/../vendor/autoload.php';
4
5
use Lneicelis\Transformer\Contract\CanTransform;
6
use Lneicelis\Transformer\Pipe\LazyPropertiesPipe;
7
use Lneicelis\Transformer\Pipe\TransformPipe;
8
use Lneicelis\Transformer\Transformer;
9
use Lneicelis\Transformer\TransformerRegistry;
10
11
class DateTimeTransformer implements CanTransform
12
{
13
    public function getResourceClass(): string
14
    {
15
        return DateTime::class;
16
    }
17
18
    /**
19
     * @param DateTime $resource
20
     * @return array
21
     */
22
    public function transform($resource): array
23
    {
24
        return [
25
            'iso' => $resource->format(DateTime::ISO8601),
26
            'timezone' => $resource->getTimezone(),
27
        ];
28
    }
29
}
30
31
class DateTimeZoneTransformer implements CanTransform
32
{
33
    public function getResourceClass(): string
34
    {
35
        return DateTimeZone::class;
36
    }
37
38
    /**
39
     * @param DateTimeZone $resource
40
     * @return string
41
     */
42
    public function transform($resource): string
43
    {
44
        return $resource->getName();
45
    }
46
}
47
48
$transformerRepository = new TransformerRegistry();
49
$transformer = new Transformer([
50
    new TransformPipe($transformerRepository),
51
    new LazyPropertiesPipe($transformerRepository),
52
]);
53
54
$transformerRepository->addTransformer(new DateTimeTransformer());
55
$transformerRepository->addTransformer(new DateTimeZoneTransformer());
56
57
$resource = new DateTime('2000-10-10 12:00:00', new DateTimeZone('-0400'));
58
59
$data = $transformer->transform($resource);
60
var_dump($data);