Skip to content

Commit dd01d1c

Browse files
committed
feature #59670 [Serializer] Add NumberNormalizer (valtzu)
This PR was merged into the 7.3 branch. Discussion ---------- [Serializer] Add `NumberNormalizer` | Q | A | ------------- | --- | Branch? | 7.3 | Bug fix? | no | New feature? | yes | Deprecations? | no | Issues | Fix #59651 | License | MIT Normalize `BcMath\Number` to `string`. A few changes in comparison to the original issue description: 1. `float`s not supported at all. No point using precision math if you start with non-precise value. 2. `Number` is always normalized to a `string`. If we wanted the `int` cast, it should be opt-in with some context key like `cast_zero_scale_to_int` – though I personally don't see a need for it. Commits ------- d3e3dfe09f4 Add `NumberNormalizer`
2 parents 94e246b + ac168b6 commit dd01d1c

File tree

2 files changed

+10
-0
lines changed

2 files changed

+10
-0
lines changed

DependencyInjection/FrameworkExtension.php

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -170,6 +170,7 @@
170170
use Symfony\Component\Serializer\NameConverter\SnakeCaseToCamelCaseNameConverter;
171171
use Symfony\Component\Serializer\Normalizer\DenormalizerInterface;
172172
use Symfony\Component\Serializer\Normalizer\NormalizerInterface;
173+
use Symfony\Component\Serializer\Normalizer\NumberNormalizer;
173174
use Symfony\Component\Serializer\Serializer;
174175
use Symfony\Component\Stopwatch\Stopwatch;
175176
use Symfony\Component\String\LazyString;
@@ -1933,6 +1934,11 @@ private function registerSerializerConfiguration(array $config, ContainerBuilder
19331934
$container->removeDefinition('serializer.normalizer.mime_message');
19341935
}
19351936

1937+
// BC layer Serializer < 7.3
1938+
if (!class_exists(NumberNormalizer::class)) {
1939+
$container->removeDefinition('serializer.normalizer.number');
1940+
}
1941+
19361942
// BC layer Serializer < 7.2
19371943
if (!class_exists(SnakeCaseToCamelCaseNameConverter::class)) {
19381944
$container->removeDefinition('serializer.name_converter.snake_case_to_camel_case');

Resources/config/serializer.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@
4444
use Symfony\Component\Serializer\Normalizer\JsonSerializableNormalizer;
4545
use Symfony\Component\Serializer\Normalizer\MimeMessageNormalizer;
4646
use Symfony\Component\Serializer\Normalizer\NormalizerInterface;
47+
use Symfony\Component\Serializer\Normalizer\NumberNormalizer;
4748
use Symfony\Component\Serializer\Normalizer\ObjectNormalizer;
4849
use Symfony\Component\Serializer\Normalizer\ProblemNormalizer;
4950
use Symfony\Component\Serializer\Normalizer\PropertyNormalizer;
@@ -221,5 +222,8 @@
221222

222223
->set('serializer.normalizer.backed_enum', BackedEnumNormalizer::class)
223224
->tag('serializer.normalizer', ['built_in' => true, 'priority' => -915])
225+
226+
->set('serializer.normalizer.number', NumberNormalizer::class)
227+
->tag('serializer.normalizer', ['built_in' => true, 'priority' => -915])
224228
;
225229
};

0 commit comments

Comments
 (0)