8000 [FrameworkBundle] convert config/serializer.xml to php · symfony/symfony@b43f8d8 · GitHub
[go: up one dir, main page]

Skip to content

Commit b43f8d8

Browse files
[FrameworkBundle] convert config/serializer.xml to php
1 parent 9b08626 commit b43f8d8

File tree

3 files changed

+188
-184
lines changed

3 files changed

+188
-184
lines changed

src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -382,7 +382,7 @@ public function load(array $configs, ContainerBuilder $container)
382382
throw new LogicException('Serializer support cannot be enabled as the Serializer component is not installed. Try running "composer require symfony/serializer-pack".');
383383
}
384384

385-
$this->registerSerializerConfiguration($config['serializer'], $container, $loader);
385+
$this->registerSerializerConfiguration($config['serializer'], $container, 8000 $phpLoader);
386386
}
387387

388388
if ($propertyInfoEnabled) {
@@ -1461,9 +1461,9 @@ private function registerSecurityCsrfConfiguration(array $config, ContainerBuild
14611461
}
14621462
}
14631463

1464-
private function registerSerializerConfiguration(array $config, ContainerBuilder $container, XmlFileLoader $loader)
1464+
private function registerSerializerConfiguration(array $config, ContainerBuilder $container, PhpFileLoader $loader)
14651465
{
1466-
$loader->load('serializer.xml');
1466+
$loader->load('serializer.php');
14671467

14681468
$chainLoader = $container->getDefinition('serializer.mapping.chain_loader');
14691469

Lines changed: 185 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,185 @@
1+
<?php
2+
3+
/*
4+
* This file is part of the Symfony package.
5+
*
6+
* (c) Fabien Potencier <fabien@symfony.com>
7+
*
8+
* For the full copyright and license information, please view the LICENSE
9+
* file that was distributed with this source code.
10+
*/
11+
12+
namespace Symfony\Component\DependencyInjection\Loader\Configurator;
13+
14+
use Psr\Cache\CacheItemPoolInterface;
15+
use Symfony\Bundle\FrameworkBundle\CacheWarmer\SerializerCacheWarmer;
16+
use Symfony\Component\Cache\Adapter\PhpArrayAdapter;
17+
use Symfony\Component\ErrorHandler\ErrorRenderer\HtmlErrorRenderer;
18+
use Symfony\Component\ErrorHandler\ErrorRenderer\SerializerErrorRenderer;
19+
use Symfony\Component\PropertyInfo\Extractor\SerializerExtractor;
20+
use Symfony\Component\Serializer\Encoder\CsvEncoder;
21+
use Symfony\Component\Serializer\Encoder\DecoderInterface;
22+
use Symfony\Component\Serializer\Encoder\EncoderInterface;
23+
use Symfony\Component\Serializer\Encoder\JsonEncoder;
24+
use Symfony\Component\Serializer\Encoder\XmlEncoder;
25+
use Symfony\Component\Serializer\Encoder\YamlEncoder;
26+
use Symfony\Component\Serializer\Mapping\ClassDiscriminatorFromClassMetadata;
27+
use Symfony\Component\Serializer\Mapping\ClassDiscriminatorResolverInterface;
28+
use Symfony\Component\Serializer\Mapping\Factory\CacheClassMetadataFactory;
29+
use Symfony\Component\Serializer\Mapping\Factory\ClassMetadataFactory;
30+
use Symfony\Component\Serializer\Mapping\Factory\ClassMetadataFactoryInterface;
31+
use Symfony\Component\Serializer\Mapping\Loader\LoaderChain;
32+
use Symfony\Component\Serializer\NameConverter\CamelCaseToSnakeCaseNameConverter;
33+
use Symfony\Component\Serializer\NameConverter\MetadataAwareNameConverter;
34+
use Symfony\Component\Serializer\Normalizer\ArrayDenormalizer;
35+
use Symfony\Component\Serializer\Normalizer\ConstraintViolationListNormalizer;
36+
use Symfony\Component\Serializer\Normalizer\DataUriNormalizer;
37+
use Symfony\Component\Serializer\Normalizer\DateIntervalNormalizer;
38+
use Symfony\Component\Serializer\Normalizer\DateTimeNormalizer;
39+
use Symfony\Component\Serializer\Normalizer\DateTimeZoneNormalizer;
40+
use Symfony\Component\Serializer\Normalizer\DenormalizerInterface;
41+
use Symfony\Component\Serializer\Normalizer\JsonSerializableNormalizer;
42+
use Symfony\Component\Serializer\Normalizer\NormalizerInterface;
43+
use Symfony\Component\Serializer\Normalizer\ObjectNormalizer;
44+
use Symfony\Component\Serializer\Normalizer\ProblemNormalizer;
45+
use Symfony\Component\Serializer\Normalizer\UnwrappingDenormalizer;
46+
use Symfony\Component\Serializer\Serializer;
47+
use Symfony\Component\Serializer\SerializerInterface;
48+
49+
return static function (ContainerConfigurator $container) {
50+
$container->parameters()
51+
->set('serializer.mapping.cache.file', '%kernel.cache_dir%/serialization.php')
52+
->set('serializer.mapping.cache.prefix', '');
53+
54+
$container->services()
55+
->set('serializer', Serializer::class)
56+
->public()
57+
->args([[], []])
58+
59+
->alias(SerializerInterface::class, 'serializer')
60+
->alias(NormalizerInterface::class, 'serializer')
61+
->alias(DenormalizerInterface::class, 'serializer')
62+
->alias(EncoderInterface::class, 'serializer')
63+
->alias(DecoderInterface::class, 'serializer')
64+
65+
->alias('serializer.property_accessor', 'property_accessor')
66+
67+
// Discriminator Map
68+
->set('serializer.mapping.class_discriminator_resolver', ClassDiscriminatorFromClassMetadata::class)
69+
->args([service('serializer.mapping.class_metadata_factory')])
70+
71+
->alias(ClassDiscriminatorResolverInterface::class, 'serializer.mapping.class_discriminator_resolver')
72+
73+
// Normalizer
74+
->set('serializer.normalizer.constraint_violation_list', ConstraintViolationListNormalizer::class)
75+
->args([[], service('serializer.name_converter.metadata_aware')])
76+
->tag('serializer.normalizer', ['priority' => '-915'])
77+
78+
->set('serializer.normalizer.datetimezone', DateTimeZoneNormalizer::class)
79+
->tag('serializer.normalizer', ['priority' => '-915'])
80+
81+
->set('serializer.normalizer.dateinterval', DateIntervalNormalizer::class)
82+
->tag('serializer.normalizer', ['priority' => '-915'])
83+
84+
->set('serializer.normalizer.data_uri', DataUriNormalizer::class)
85+
->args([service('mime_types')->nullOnInvalid()])
86+
->tag('serializer.normalizer', ['priority' => '-920'])
87+
88+
->set('serializer.normalizer.datetime', DateTimeNormalizer::class)
89+
->tag('serializer.normalizer', ['priority' => '-910'])
90+
91+
->set('serializer.normalizer.json_serializable', JsonSerializableNormalizer::class)
92+
->tag('serializer.normalizer', ['priority' => '-900'])
93+
94+
->set('serializer.normalizer.problem', ProblemNormalizer::class)
95+
->args([param('kernel.debug')])
96+
->tag('serializer.normalizer', ['priority' => '-890'])
97+
98+
->set('serializer.denormalizer.unwrapping', UnwrappingDenormalizer::class)
99+
->args([service('serializer.property_accessor')])
100+
->tag('serializer.normalizer', ['priority' => '1000'])
101+
102+
->set('serializer.normalizer.object', ObjectNormalizer::class)
103+
->args([
104+
service('serializer.mapping.class_metadata_factory'),
105+
service('serializer.name_converter.metadata_aware'),
106+
service('serializer.property_accessor'),
107+
service('property_info')->ignoreOnInvalid(),
108+
service('serializer.mapping.class_discriminator_resolver')->ignoreOnInvalid(),
109+
null,
110+
[],
111+
])
112+
->tag('serializer.normalizer', ['priority' => '-1000'])
113+
114+
->alias(ObjectNormalizer::class, 'serializer.normalizer.object')
115+
116+
->set('serializer.denormalizer.array', ArrayDenormalizer::class)
117+
->tag('serializer.normalizer', ['priority' => '-990'])
118+
119+
// Loader
120+
->set('serializer.mapping.chain_loader', LoaderChain::class)
121+
->args([[]])
122+
123+
// Class Metadata Factory
124+
->set('serializer.mapping.class_metadata_factory', ClassMetadataFactory::class)
125+
->args([service('serializer.mapping.chain_loader'), null])
126+
127+
->alias(ClassMetadataFactoryInterface::class, 'serializer.mapping.class_metadata_factory')
128+
129+
// Cache
130+
->set('serializer.mapping.cache_warmer', SerializerCacheWarmer::class)
131+
->args([[], param('serializer.mapping.cache.file')])
132+
->tag('kernel.cache_warmer')
133+
134+
->set('serializer.mapping.cache.symfony', CacheItemPoolInterface::class)
135+
->factory([PhpArrayAdapter::class, 'create'])
136+
->args([param('serializer.mapping.cache.file'), service('cache.serializer')])
137+
138+
->set('serializer.mapping.cache_class_metadata_factory', CacheClassMetadataFactory::class)
139+
->decorate('serializer.mapping.class_metadata_factory')
140+
->args([
141+
service('serializer.mapping.cache_class_metadata_factory.inner'),
142+
service('serializer.mapping.cache.symfony'),
143+
])
144+
145+
// Encoders
146+
->set('serializer.encoder.xml', XmlEncoder::class)
147+
->tag('serializer.encoder')
148+
149+
->set('serializer.encoder.json', JsonEncoder::class)
150+
->tag('serializer.encoder')
151+
152+
->set('serializer.encoder.yaml', YamlEncoder::class)
153+
->tag('serializer.encoder')
154+
155+
->set('serializer.encoder.csv', CsvEncoder::class)
156+
->tag('serializer.encoder')
157+
158+
// Name converter
159+
->set('serializer.name_converter.camel_case_to_snake_case', CamelCaseToSnakeCaseNameConverter::class)
160+
161+
->set('serializer.name_converter.metadata_aware', MetadataAwareNameConverter::class)
162+
->args([service('serializer.mapping.class_metadata_factory')])
163+
164+
// PropertyInfo extractor
165+
->set('property_info.serializer_extractor', SerializerExtractor::class)
166+
->args([service('serializer.mapping.class_metadata_factory')])
167+
->tag('property_info.list_extractor', ['priority' => '-999'])
168+
169+
// ErrorRenderer integration
170+
->alias('error_renderer', 'error_renderer.serializer')
171+
->alias('error_renderer.serializer', 'error_handler.error_renderer.serializer')
172+
173+
->set('error_handler.error_renderer.serializer', SerializerErrorRenderer::class)
174+
->args([
175+
service('serializer'),
176+
inline_service(SerializerErrorRenderer::class)
177+
->factory([SerializerErrorRenderer::class, 'getPreferredFormat'])
178+
->args([service('request_stack')]),
179+
service('error_renderer.html'),
180+
inline_service(HtmlErrorRenderer::class)
181+
->factory([HtmlErrorRenderer::class, 'isDebug'])
182+
->args([service('request_stack'), param('kernel.debug')]),
183+
])
184+
;
185+
};

src/Symfony/Bundle/FrameworkBundle/Resources/config/serializer.xml

Lines changed: 0 additions & 181 deletions
This file was deleted.

0 commit comments

Comments
 (0)
0