Skip to content

Commit d2a8a77

Browse files
committed
Add ScalarNormalizer
1 parent c001b30 commit d2a8a77

File tree

2 files changed

+37
-5
lines changed

2 files changed

+37
-5
lines changed

src/Symfony/Component/Serializer/Normalizer/AbstractObjectNormalizer.php

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -213,12 +213,11 @@ public function normalize(mixed $data, ?string $format = null, array $context =
213213
foreach ($stack as $attribute => $attributeValue) {
214214
$attributeContext = $this->getAttributeNormalizationContext($data, $attribute, $context);
215215

216-
if (null === $attributeValue || \is_scalar($attributeValue)) {
217-
$normalizedData = $this->updateData($normalizedData, $attribute, $attributeValue, $class, $format, $attributeContext, $attributesMetadata, $classMetadata);
218-
continue;
219-
}
220-
221216
if (!$this->serializer instanceof NormalizerInterface) {
217+
if (null === $attributeValue || \is_scalar($attributeValue)) {
218+
$normalizedData = $this->updateData($normalizedData, $attribute, $attributeValue, $class, $format, $attributeContext, $attributesMetadata, $classMetadata);
219+
continue;
220+
}
222221
throw new LogicException(\sprintf('Cannot normalize attribute "%s" because the injected serializer is not a normalizer.', $attribute));
223222
}
224223

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
<?php
2+
3+
namespace Symfony\Component\Serializer\Normalizer;
4+
5+
class ScalarNormalizer implements NormalizerInterface
6+
{
7+
/**
8+
* @inheritDoc
9+
*/
10+
public function normalize(mixed $data, ?string $format = null, array $context = []): float|int|bool|string|null
11+
{
12+
return $data;
13+
}
14+
15+
/**
16+
* @inheritDoc
17+
*/
18+
public function supportsNormalization(mixed $data, ?string $format = null, array $context = []): bool
19+
{
20+
return null === $data || is_scalar($data);
21+
}
22+
23+
public function getSupportedTypes(?string $format): array
24+
{
25+
return [
26+
'native-NULL' => true,
27+
'native-int' => true,
28+
'native-bool' => true,
29+
'native-string' => true,
30+
'native-float' => true,
31+
];
32+
}
33+
}

0 commit comments

Comments
 (0)