-
Notifications
You must be signed in to change notification settings - Fork 6
/
YearOfBirthTransformer.php
29 lines (23 loc) · 1.12 KB
/
YearOfBirthTransformer.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<?php
declare(strict_types=1);
namespace AutoMapper\Tests\Bundle\Resources\App\Service;
use AutoMapper\Metadata\MapperMetadata;
use AutoMapper\Metadata\SourcePropertyMetadata;
use AutoMapper\Metadata\TargetPropertyMetadata;
use AutoMapper\Metadata\TypesMatching;
use AutoMapper\Tests\Bundle\Resources\App\Entity\User;
use AutoMapper\Tests\Bundle\Resources\App\Entity\UserDTO;
use AutoMapper\Transformer\PropertyTransformer\PropertyTransformerInterface;
use AutoMapper\Transformer\PropertyTransformer\PropertyTransformerSupportInterface;
class YearOfBirthTransformer implements PropertyTransformerInterface, PropertyTransformerSupportInterface
{
public function transform(mixed $value, object|array $user, array $context): mixed
{
\assert($user instanceof User);
return ((int) date('Y')) - ((int) $user->age);
}
public function supports(TypesMatching $types, SourcePropertyMetadata $source, TargetPropertyMetadata $target, MapperMetadata $mapperMetadata): bool
{
return User::class === $mapperMetadata->source && UserDTO::class === $mapperMetadata->target && 'yearOfBirth' === $source->name;
}
}