-
Notifications
You must be signed in to change notification settings - Fork 6
/
FooMapTo.php
76 lines (60 loc) · 2.03 KB
/
FooMapTo.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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
<?php
declare(strict_types=1);
namespace AutoMapper\Tests\Bundle\Resources\App\Entity;
use AutoMapper\Attribute\MapTo;
use AutoMapper\Tests\Fixtures\MapTo\Bar;
#[MapTo('array', name: 'transformWithExpressionFunction', transformer: "service('foo').foo()")]
class FooMapTo
{
public function __construct(
#[MapTo(Bar::class, name: 'bar')]
#[MapTo(name: 'baz')]
#[MapTo('array', name: 'transformFromIsCallable', transformer: self::class . '::transformFromIsCallable')]
#[MapTo('array', name: 'transformFromStringInstance', transformer: 'transformFromStringInstance')]
#[MapTo('array', name: 'transformFromStringStatic', transformer: 'transformFromStringStatic')]
#[MapTo('array', name: 'transformFromExpressionLanguage', transformer: "source.foo === 'foo' ? 'transformed' : 'not transformed'")]
public string $foo
) {
}
#[MapTo('array', if: 'source.foo == "foo"')]
public string $if = 'if';
#[MapTo('array', if: 'shouldMapStatic')]
public string $ifCallableStatic = 'if';
#[MapTo('array', if: 'shouldMapNotStatic')]
public string $ifCallable = 'if';
#[MapTo('array', if: 'is_object')]
public string $ifCallableOther = 'if';
#[MapTo('array', ignore: true)]
public function getA(): string
{
return 'a';
}
public function getD(): string
{
return 'd';
}
public static function transformFromIsCallable($value)
{
return 'transformFromIsCallable_' . $value;
}
public function transformFromStringInstance($value)
{
return 'transformFromStringInstance_' . $value;
}
public static function transformFromStringStatic($value)
{
return 'transformFromStringStatic_' . $value;
}
public static function shouldMapStatic($source): bool
{
return $source->foo === 'foo';
}
public function shouldMapNotStatic(): bool
{
return $this->foo === 'foo';
}
public function transformExternalProperty($value)
{
return 'external';
}
}