Skip to content

Commit 1076389

Browse files
committed
Simplify prototypes
1 parent f378568 commit 1076389

38 files changed

+211
-306
lines changed

src/Mapping/Metadata/ClassPrototype.php renamed to src/Mapping/Metadata/ClassInfo.php

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,20 @@
44

55
namespace TypeLang\Mapper\Mapping\Metadata;
66

7-
use TypeLang\Mapper\Mapping\Metadata\ClassMetadata\DiscriminatorPrototype;
8-
use TypeLang\Mapper\Mapping\Metadata\ClassMetadata\PropertyPrototypeSet;
7+
use TypeLang\Mapper\Mapping\Metadata\ClassMetadata\DiscriminatorInfo;
8+
use TypeLang\Mapper\Mapping\Metadata\ClassMetadata\PropertyInfo;
99

1010
/**
1111
* @template T of object
1212
*/
13-
final class ClassPrototype
13+
final class ClassInfo
1414
{
15-
public readonly PropertyPrototypeSet $properties;
15+
/**
16+
* @var array<non-empty-string, PropertyInfo>
17+
*/
18+
public array $properties = [];
1619

17-
public ?DiscriminatorPrototype $discriminator = null;
20+
public ?DiscriminatorInfo $discriminator = null;
1821

1922
/**
2023
* @var non-empty-string|null
@@ -30,7 +33,13 @@ public function __construct(
3033
* @var class-string<T>
3134
*/
3235
public readonly string $name,
33-
) {
34-
$this->properties = new PropertyPrototypeSet();
36+
) {}
37+
38+
/**
39+
* @param non-empty-string $name
40+
*/
41+
public function getPropertyOrCreate(string $name): PropertyInfo
42+
{
43+
return $this->properties[$name] ??= new PropertyInfo($name);
3544
}
3645
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace TypeLang\Mapper\Mapping\Metadata\ClassMetadata;
6+
7+
use TypeLang\Mapper\Mapping\Metadata\TypeInfo;
8+
9+
final class DiscriminatorInfo
10+
{
11+
public function __construct(
12+
/**
13+
* @var non-empty-string
14+
*/
15+
public readonly string $field,
16+
/**
17+
* @var non-empty-array<non-empty-string, TypeInfo>
18+
*/
19+
public array $map,
20+
public ?TypeInfo $default = null,
21+
) {}
22+
}

src/Mapping/Metadata/ClassMetadata/DiscriminatorMetadata/DiscriminatorMapPrototype.php

Lines changed: 0 additions & 39 deletions
This file was deleted.

src/Mapping/Metadata/ClassMetadata/DiscriminatorPrototype.php

Lines changed: 0 additions & 20 deletions
This file was deleted.

src/Mapping/Metadata/ClassMetadata/PropertyPrototype.php renamed to src/Mapping/Metadata/ClassMetadata/PropertyInfo.php

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,24 +4,27 @@
44

55
namespace TypeLang\Mapper\Mapping\Metadata\ClassMetadata;
66

7-
use TypeLang\Mapper\Mapping\Metadata\ClassMetadata\PropertyMetadata\DefaultValuePrototype;
8-
use TypeLang\Mapper\Mapping\Metadata\ConditionPrototypeSet;
9-
use TypeLang\Mapper\Mapping\Metadata\TypePrototype;
7+
use TypeLang\Mapper\Mapping\Metadata\ClassMetadata\PropertyMetadata\DefaultValueInfo;
8+
use TypeLang\Mapper\Mapping\Metadata\ConditionInfo;
9+
use TypeLang\Mapper\Mapping\Metadata\TypeInfo;
1010

11-
final class PropertyPrototype
11+
final class PropertyInfo
1212
{
1313
/**
1414
* @var non-empty-string
1515
*/
1616
public string $alias;
1717

18-
public TypePrototype $read;
18+
public TypeInfo $read;
1919

20-
public TypePrototype $write;
20+
public TypeInfo $write;
2121

22-
public ?DefaultValuePrototype $default = null;
22+
public ?DefaultValueInfo $default = null;
2323

24-
public readonly ConditionPrototypeSet $skip;
24+
/**
25+
* @var list<ConditionInfo>
26+
*/
27+
public array $skip = [];
2528

2629
/**
2730
* @var non-empty-string|null
@@ -40,7 +43,6 @@ public function __construct(
4043
public readonly string $name,
4144
) {
4245
$this->alias = $name;
43-
$this->skip = new ConditionPrototypeSet();
44-
$this->read = $this->write = new TypePrototype('mixed');
46+
$this->read = $this->write = new TypeInfo('mixed');
4547
}
4648
}

src/Mapping/Metadata/ClassMetadata/PropertyMetadata/DefaultValuePrototype.php renamed to src/Mapping/Metadata/ClassMetadata/PropertyMetadata/DefaultValueInfo.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
namespace TypeLang\Mapper\Mapping\Metadata\ClassMetadata\PropertyMetadata;
66

7-
final class DefaultValuePrototype
7+
final class DefaultValueInfo
88
{
99
public function __construct(
1010
public readonly mixed $value,

src/Mapping/Metadata/ClassMetadata/PropertyPrototypeSet.php

Lines changed: 0 additions & 39 deletions
This file was deleted.
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace TypeLang\Mapper\Mapping\Metadata\Condition;
6+
7+
use TypeLang\Mapper\Mapping\Metadata\ConditionInfo;
8+
9+
final class EmptyConditionInfo extends ConditionInfo {}

src/Mapping/Metadata/Condition/EmptyConditionPrototype.php

Lines changed: 0 additions & 9 deletions
This file was deleted.

src/Mapping/Metadata/Condition/ExpressionConditionPrototype.php renamed to src/Mapping/Metadata/Condition/ExpressionConditionInfo.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@
44

55
namespace TypeLang\Mapper\Mapping\Metadata\Condition;
66

7-
use TypeLang\Mapper\Mapping\Metadata\ConditionPrototype;
7+
use TypeLang\Mapper\Mapping\Metadata\ConditionInfo;
88

9-
final class ExpressionConditionPrototype extends ConditionPrototype
9+
final class ExpressionConditionInfo extends ConditionInfo
1010
{
1111
/**
1212
* @var non-empty-string

0 commit comments

Comments
 (0)