From e9a9acd3a11806d6e28225466185f80348c2ce54 Mon Sep 17 00:00:00 2001 From: Matthias Schmidt Date: Sun, 22 Jun 2025 10:59:58 +0200 Subject: [PATCH] [Serializer] Remove AdvancedNameConverterInterface --- UPGRADE-8.0.md | 16 ++++++++++++ src/Symfony/Component/Serializer/CHANGELOG.md | 16 ++++++++++++ .../AdvancedNameConverterInterface.php | 26 ------------------- .../CamelCaseToSnakeCaseNameConverter.php | 4 +-- .../MetadataAwareNameConverter.php | 2 +- .../NameConverter/NameConverterInterface.php | 4 +-- .../Tests/Normalizer/ObjectNormalizerTest.php | 6 ++--- 7 files changed, 40 insertions(+), 34 deletions(-) delete mode 100644 src/Symfony/Component/Serializer/NameConverter/AdvancedNameConverterInterface.php diff --git a/UPGRADE-8.0.md b/UPGRADE-8.0.md index bedf3fc3f133c..b83201a86c831 100644 --- a/UPGRADE-8.0.md +++ b/UPGRADE-8.0.md @@ -325,6 +325,22 @@ Serializer ---------- * Remove `AbstractNormalizerContextBuilder::withDefaultContructorArguments()`, use `withDefaultConstructorArguments()` instead + * Change signature of `NameConverterInterface::normalize()` and `NameConverterInterface::denormalize()` methods: + + Before: + + ```php + public function normalize(string $propertyName): string; + public function denormalize(string $propertyName): string; + ``` + + After: + + ```php + public function normalize(string $propertyName, ?string $class = null, ?string $format = null, array $context = []): string; + public function denormalize(string $propertyName, ?string $class = null, ?string $format = null, array $context = []): string; + ``` + * Remove `AdvancedNameConverterInterface`, use `NameConverterInterface` instead TwigBridge ---------- diff --git a/src/Symfony/Component/Serializer/CHANGELOG.md b/src/Symfony/Component/Serializer/CHANGELOG.md index 24e9e22cd40c1..31d7ed05664ef 100644 --- a/src/Symfony/Component/Serializer/CHANGELOG.md +++ b/src/Symfony/Component/Serializer/CHANGELOG.md @@ -5,6 +5,22 @@ CHANGELOG --- * Remove `AbstractNormalizerContextBuilder::withDefaultContructorArguments()`, use `withDefaultConstructorArguments()` instead + * Change signature of `NameConverterInterface::normalize()` and `NameConverterInterface::denormalize()` methods: + + Before: + + ```php + public function normalize(string $propertyName): string; + public function denormalize(string $propertyName): string; + ``` + + After: + + ```php + public function normalize(string $propertyName, ?string $class = null, ?string $format = null, array $context = []): string; + public function denormalize(string $propertyName, ?string $class = null, ?string $format = null, array $context = []): string; + ``` + * Remove `AdvancedNameConverterInterface`, use `NameConverterInterface` instead 7.3 --- diff --git a/src/Symfony/Component/Serializer/NameConverter/AdvancedNameConverterInterface.php b/src/Symfony/Component/Serializer/NameConverter/AdvancedNameConverterInterface.php deleted file mode 100644 index 975d28fd34c60..0000000000000 --- a/src/Symfony/Component/Serializer/NameConverter/AdvancedNameConverterInterface.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Serializer\NameConverter; - -/** - * Gives access to the class, the format and the context in the property name converters. - * - * @author Kévin Dunglas - * - * @deprecated since Symfony 7.2, use NameConverterInterface instead - */ -interface AdvancedNameConverterInterface extends NameConverterInterface -{ - public function normalize(string $propertyName, ?string $class = null, ?string $format = null, array $context = []): string; - - public function denormalize(string $propertyName, ?string $class = null, ?string $format = null, array $context = []): string; -} diff --git a/src/Symfony/Component/Serializer/NameConverter/CamelCaseToSnakeCaseNameConverter.php b/src/Symfony/Component/Serializer/NameConverter/CamelCaseToSnakeCaseNameConverter.php index 033ec94b7985b..e440aea3948fd 100644 --- a/src/Symfony/Component/Serializer/NameConverter/CamelCaseToSnakeCaseNameConverter.php +++ b/src/Symfony/Component/Serializer/NameConverter/CamelCaseToSnakeCaseNameConverter.php @@ -41,7 +41,7 @@ public function __construct( * @param string|null $format * @param array $context */ - public function normalize(string $propertyName/* , ?string $class = null, ?string $format = null, array $context = [] */): string + public function normalize(string $propertyName, ?string $class = null, ?string $format = null, array $context = []): string { if (null === $this->attributes || \in_array($propertyName, $this->attributes, true)) { return strtolower(preg_replace('/[A-Z]/', '_\\0', lcfirst($propertyName))); @@ -55,7 +55,7 @@ public function normalize(string $propertyName/* , ?string $class = null, ?strin * @param string|null $format * @param array $context */ - public function denormalize(string $propertyName/* , ?string $class = null, ?string $format = null, array $context = [] */): string + public function denormalize(string $propertyName, ?string $class = null, ?string $format = null, array $context = []): string { $class = 1 < \func_num_args() ? func_get_arg(1) : null; $format = 2 < \func_num_args() ? func_get_arg(2) : null; diff --git a/src/Symfony/Component/Serializer/NameConverter/MetadataAwareNameConverter.php b/src/Symfony/Component/Serializer/NameConverter/MetadataAwareNameConverter.php index c72f148eb0240..451b72f34515e 100644 --- a/src/Symfony/Component/Serializer/NameConverter/MetadataAwareNameConverter.php +++ b/src/Symfony/Component/Serializer/NameConverter/MetadataAwareNameConverter.php @@ -18,7 +18,7 @@ /** * @author Fabien Bourigault */ -final class MetadataAwareNameConverter implements AdvancedNameConverterInterface +final class MetadataAwareNameConverter implements NameConverterInterface { /** * @var array> diff --git a/src/Symfony/Component/Serializer/NameConverter/NameConverterInterface.php b/src/Symfony/Component/Serializer/NameConverter/NameConverterInterface.php index d6bfeceb46c6d..04ae802651d6c 100644 --- a/src/Symfony/Component/Serializer/NameConverter/NameConverterInterface.php +++ b/src/Symfony/Component/Serializer/NameConverter/NameConverterInterface.php @@ -25,7 +25,7 @@ interface NameConverterInterface * @param string|null $format * @param array $context */ - public function normalize(string $propertyName/* , ?string $class = null, ?string $format = null, array $context = [] */): string; + public function normalize(string $propertyName, ?string $class = null, ?string $format = null, array $context = []): string; /** * Converts a property name to its denormalized value. @@ -34,5 +34,5 @@ public function normalize(string $propertyName/* , ?string $class = null, ?strin * @param string|null $format * @param array $context */ - public function denormalize(string $propertyName/* , ?string $class = null, ?string $format = null, array $context = [] */): string; + public function denormalize(string $propertyName, ?string $class = null, ?string $format = null, array $context = []): string; } diff --git a/src/Symfony/Component/Serializer/Tests/Normalizer/ObjectNormalizerTest.php b/src/Symfony/Component/Serializer/Tests/Normalizer/ObjectNormalizerTest.php index 439dce056995c..7ff1f5cd5cf69 100644 --- a/src/Symfony/Component/Serializer/Tests/Normalizer/ObjectNormalizerTest.php +++ b/src/Symfony/Component/Serializer/Tests/Normalizer/ObjectNormalizerTest.php @@ -28,9 +28,9 @@ use Symfony\Component\Serializer\Mapping\Factory\ClassMetadataFactoryInterface; use Symfony\Component\Serializer\Mapping\Loader\AttributeLoader; use Symfony\Component\Serializer\Mapping\Loader\YamlFileLoader; -use Symfony\Component\Serializer\NameConverter\AdvancedNameConverterInterface; use Symfony\Component\Serializer\NameConverter\CamelCaseToSnakeCaseNameConverter; use Symfony\Component\Serializer\NameConverter\MetadataAwareNameConverter; +use Symfony\Component\Serializer\NameConverter\NameConverterInterface; use Symfony\Component\Serializer\Normalizer\AbstractNormalizer; use Symfony\Component\Serializer\Normalizer\ArrayDenormalizer; use Symfony\Component\Serializer\Normalizer\DateTimeNormalizer; @@ -779,9 +779,9 @@ public function testDenormalizeFalsePseudoType() $this->assertFalse($object->canBeFalseOrString); } - public function testAdvancedNameConverter() + public function testNameConverterProperties() { - $nameConverter = new class implements AdvancedNameConverterInterface { + $nameConverter = new class implements NameConverterInterface { public function normalize(string $propertyName, ?string $class = null, ?string $format = null, array $context = []): string { return \sprintf('%s-%s-%s-%s', $propertyName, $class, $format, $context['foo']);