При использовании Пакет фреймворков Symfony 4.2 с Компонент сериализатора существует несколько нормализаторы, автоматически настроенных платформой в определенном порядке.
Я хочу заменить один из этих нормализаторов (ObjectNormalizer) моей личной реализацией (которая является расширением ObjectNormalizer), не касаясь всех других предоставленных нормализаторов или их порядка.
Есть ли способ добиться этого без повторного объявления всех нормализаторов и их порядка в конфигурации Serializer?
Другим вариантом было бы убедиться, что мой пользовательский нормализатор расположен непосредственно перед ObjectNormalizer.
Спасибо, насколько я понимаю, это просто добавление нормализаторов в индексированный массив, нет имени для прямой идентификации. Вот поэтому я и спрашиваю, есть ли лучший способ.




Нормализаторы устанавливаются с приоритетом конфигурацией Symfony Framework Bundle. Можно найти перечисленные приоритеты здесь
Зная, что можно определить собственный приоритет для размещения CustomNormalizer там, где это необходимо в service.yaml:
App\Normalizer\MyCustomNormalizer:
tags:
- {name: serializer.normalizer, priority: -995}
Вы смотрели на добавление прохода компилятора для переопределения компонента symfony.com/doc/current/service_container/compiler_passes.html? Я не знаком с 4 и компонентом сериализатора, но если вы можете получить доступ к нормализатору по имени, вы сможете переопределить его.