Skip to content

Commit 6df04e0

Browse files
authored
Merge pull request #11 from WonderNetwork/feature/deserialize-enums
denormalize enums
2 parents 3ba9475 + 6e9d374 commit 6df04e0

4 files changed

Lines changed: 13 additions & 0 deletions

File tree

src/ServiceFactory/SlimServiceFactory.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
use Symfony\Component\PropertyInfo\Extractor\ReflectionExtractor;
2323
use Symfony\Component\PropertyInfo\PropertyInfoExtractor;
2424
use Symfony\Component\Serializer\Normalizer\ArrayDenormalizer;
25+
use Symfony\Component\Serializer\Normalizer\BackedEnumNormalizer;
2526
use Symfony\Component\Serializer\Normalizer\DenormalizerInterface;
2627
use Symfony\Component\Serializer\Normalizer\NormalizerInterface;
2728
use Symfony\Component\Serializer\Normalizer\ObjectNormalizer;
@@ -39,6 +40,7 @@ final class SlimServiceFactory implements ServiceFactory {
3940
public function __invoke(ServicesBuilder $builder): iterable {
4041
yield Serializer::class => static fn () => new Serializer([
4142
new ArrayDenormalizer(),
43+
new BackedEnumNormalizer(),
4244
new ObjectNormalizer(
4345
propertyTypeExtractor: new PropertyInfoExtractor(
4446
typeExtractors: [

tests/Http/Serializer/DeserializeParameterResolverTest.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ public function testDeserialize(): void {
2727
'tag' => [
2828
'name' => 'alpha',
2929
],
30+
'enum' => 'foo',
3031
];
3132
$get = [
3233
'page' => 3,
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 WonderNetwork\SlimKernel\Http\Serializer;
6+
7+
enum SampleEnum: string {
8+
case Foo = 'foo';
9+
}

tests/Http/Serializer/SamplePostInput.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,4 +9,5 @@ final class SamplePostInput {
99
/** @var TagInput[] */
1010
public array $tags;
1111
public TagInput $tag;
12+
public SampleEnum $enum;
1213
}

0 commit comments

Comments
 (0)