public RegisterSerializationClassesCompilerPass::process(ContainerBuilder $container)
Adds services to the Serializer.
Parameters
\Symfony\Component\DependencyInjection\ContainerBuilder $container: The container to process.
Overrides CompilerPassInterface::process
File
- core/modules/serialization/src/RegisterSerializationClassesCompilerPass.php, line 20
Class
- RegisterSerializationClassesCompilerPass
- Adds services tagged 'normalizer' and 'encoder' to the Serializer.
Namespace
Drupal\serialization
Code
public function process(ContainerBuilder $container) { $definition = $container->getDefinition('serializer'); // Retrieve registered Normalizers and Encoders from the container. foreach ($container->findTaggedServiceIds('normalizer') as $id => $attributes) { $priority = isset($attributes[0]['priority']) ? $attributes[0]['priority'] : 0; $normalizers[$priority][] = new Reference($id); } foreach ($container->findTaggedServiceIds('encoder') as $id => $attributes) { $priority = isset($attributes[0]['priority']) ? $attributes[0]['priority'] : 0; $encoders[$priority][] = new Reference($id); } // Add the registered Normalizers and Encoders to the Serializer. if (!empty($normalizers)) { $definition->replaceArgument(0, $this->sort($normalizers)); } if (!empty($encoders)) { $definition->replaceArgument(1, $this->sort($encoders)); } // Find all serialization formats known. $formats = array(); $format_providers = []; foreach ($container->findTaggedServiceIds('encoder') as $service_id => $attributes) { $format = $attributes[0]['format']; $formats[] = $format; if ($provider_tag = $container->getDefinition($service_id)->getTag('_provider')) { $format_providers[$format] = $provider_tag[0]['provider']; } } $container->setParameter('serializer.formats', $formats); $container->setParameter('serializer.format_providers', $format_providers); }
Please login to continue.