• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

api-platform / core / 19799301771

30 Nov 2025 01:04PM UTC coverage: 25.229% (-0.03%) from 25.257%
19799301771

push

github

web-flow
fix(metadata): repeatable attribute mutators (#7542)

14557 of 57700 relevant lines covered (25.23%)

28.11 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

100.0
/src/Symfony/Bundle/Resources/config/api.php
1
<?php
2

3
/*
4
 * This file is part of the API Platform project.
5
 *
6
 * (c) Kévin Dunglas <dunglas@gmail.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
declare(strict_types=1);
13

14
namespace Symfony\Component\DependencyInjection\Loader\Configurator;
15

16
return function (ContainerConfigurator $container) {
8✔
17
    $services = $container->services();
8✔
18

19
    $services->set('api_platform.action.not_found', 'ApiPlatform\Symfony\Action\NotFoundAction')
8✔
20
        ->public();
8✔
21

22
    $services->alias('ApiPlatform\Symfony\Action\NotFoundAction', 'api_platform.action.not_found')
8✔
23
        ->public();
8✔
24

25
    $services->set('api_platform.action.not_exposed', 'ApiPlatform\Symfony\Action\NotExposedAction')
8✔
26
        ->public();
8✔
27

28
    $services->alias('ApiPlatform\Symfony\Action\NotExposedAction', 'api_platform.action.not_exposed')
8✔
29
        ->public();
8✔
30

31
    $services->alias('api_platform.serializer', 'serializer');
8✔
32

33
    $services->alias('api_platform.property_accessor', 'property_accessor');
8✔
34

35
    $services->alias('api_platform.property_info', 'property_info');
8✔
36

37
    $services->set('api_platform.negotiator', 'Negotiation\Negotiator');
8✔
38

39
    $services->set('api_platform.resource_class_resolver', 'ApiPlatform\Metadata\ResourceClassResolver')
8✔
40
        ->args([service('api_platform.metadata.resource.name_collection_factory')]);
8✔
41

42
    $services->alias('ApiPlatform\Metadata\ResourceClassResolverInterface', 'api_platform.resource_class_resolver');
8✔
43

44
    $services->alias('ApiPlatform\Metadata\UrlGeneratorInterface', 'api_platform.router');
8✔
45

46
    $services->set('api_platform.router', 'ApiPlatform\Symfony\Routing\Router')
8✔
47
        ->args([
8✔
48
            service('router'),
8✔
49
            '%api_platform.url_generation_strategy%',
8✔
50
        ]);
8✔
51

52
    $services->set('api_platform.serializer.context_builder', 'ApiPlatform\Serializer\SerializerContextBuilder')
8✔
53
        ->arg(0, service('api_platform.metadata.resource.metadata_collection_factory'))
8✔
54
        ->arg('$debug', '%kernel.debug%');
8✔
55

56
    $services->set('api_platform.serializer.filter_parameter_provider', 'ApiPlatform\Serializer\Parameter\SerializerFilterParameterProvider')
8✔
57
        ->args([service('api_platform.filter_locator')])
8✔
58
        ->tag('api_platform.parameter_provider', ['key' => 'api_platform.serializer.filter_parameter_provider', 'priority' => -895]);
8✔
59

60
    $services->alias('ApiPlatform\State\SerializerContextBuilderInterface', 'api_platform.serializer.context_builder');
8✔
61

62
    $services->set('api_platform.serializer.context_builder.filter', 'ApiPlatform\Serializer\SerializerFilterContextBuilder')
8✔
63
        ->decorate('api_platform.serializer.context_builder', null, 0)
8✔
64
        ->args([
8✔
65
            service('api_platform.metadata.resource.metadata_collection_factory'),
8✔
66
            service('api_platform.filter_locator'),
8✔
67
            service('api_platform.serializer.context_builder.filter.inner'),
8✔
68
        ]);
8✔
69

70
    $services->set('api_platform.serializer.property_filter', 'ApiPlatform\Serializer\Filter\PropertyFilter')
8✔
71
        ->abstract()
8✔
72
        ->arg('$parameterName', 'properties')
8✔
73
        ->arg('$overrideDefaultProperties', false)
8✔
74
        ->arg('$whitelist', null)
8✔
75
        ->arg('$nameConverter', service('api_platform.name_converter')->ignoreOnInvalid());
8✔
76

77
    $services->alias('ApiPlatform\Serializer\Filter\PropertyFilter', 'api_platform.serializer.property_filter');
8✔
78

79
    $services->set('api_platform.serializer.group_filter', 'ApiPlatform\Serializer\Filter\GroupFilter')
8✔
80
        ->abstract();
8✔
81

82
    $services->alias('ApiPlatform\Serializer\Filter\GroupFilter', 'api_platform.serializer.group_filter');
8✔
83

84
    $services->set('api_platform.serializer.normalizer.item', 'ApiPlatform\Serializer\ItemNormalizer')
8✔
85
        ->args([
8✔
86
            service('api_platform.metadata.property.name_collection_factory'),
8✔
87
            service('api_platform.metadata.property.metadata_factory'),
8✔
88
            service('api_platform.iri_converter'),
8✔
89
            service('api_platform.resource_class_resolver'),
8✔
90
            service('api_platform.property_accessor'),
8✔
91
            service('api_platform.name_converter')->ignoreOnInvalid(),
8✔
92
            service('serializer.mapping.class_metadata_factory')->ignoreOnInvalid(),
8✔
93
            null,
8✔
94
            service('api_platform.metadata.resource.metadata_collection_factory')->ignoreOnInvalid(),
8✔
95
            service('api_platform.security.resource_access_checker')->ignoreOnInvalid(),
8✔
96
            [],
8✔
97
            service('api_platform.http_cache.tag_collector')->ignoreOnInvalid(),
8✔
98
        ])
8✔
99
        ->tag('serializer.normalizer', ['priority' => -895]);
8✔
100

101
    $services->set('api_platform.serializer.mapping.class_metadata_factory', 'ApiPlatform\Serializer\Mapping\Factory\ClassMetadataFactory')
8✔
102
        ->decorate('serializer.mapping.class_metadata_factory', null, -1)
8✔
103
        ->args([service('api_platform.serializer.mapping.class_metadata_factory.inner')]);
8✔
104

105
    $services->set('api_platform.serializer.mapping.cache_class_metadata_factory', 'Symfony\Component\Serializer\Mapping\Factory\CacheClassMetadataFactory')
8✔
106
        ->decorate('api_platform.serializer.mapping.class_metadata_factory', null, -2)
8✔
107
        ->args([
8✔
108
            service('api_platform.serializer.mapping.cache_class_metadata_factory.inner'),
8✔
109
            service('serializer.mapping.cache.symfony'),
8✔
110
        ]);
8✔
111

112
    $services->set('api_platform.path_segment_name_generator.underscore', 'ApiPlatform\Metadata\Operation\UnderscorePathSegmentNameGenerator');
8✔
113

114
    $services->set('api_platform.path_segment_name_generator.dash', 'ApiPlatform\Metadata\Operation\DashPathSegmentNameGenerator');
8✔
115

116
    $services->set('api_platform.metadata.path_segment_name_generator.underscore', 'ApiPlatform\Metadata\Operation\UnderscorePathSegmentNameGenerator')
8✔
117
        ->args([service('api_platform.inflector')->nullOnInvalid()]);
8✔
118

119
    $services->set('api_platform.metadata.path_segment_name_generator.dash', 'ApiPlatform\Metadata\Operation\DashPathSegmentNameGenerator')
8✔
120
        ->args([service('api_platform.inflector')->nullOnInvalid()]);
8✔
121

122
    $services->set('api_platform.metadata.inflector', 'ApiPlatform\Metadata\Util\Inflector');
8✔
123

124
    $services->set('api_platform.cache.route_name_resolver')
8✔
125
        ->parent('cache.system')
8✔
126
        ->tag('cache.pool');
8✔
127

128
    $services->set('api_platform.route_loader', 'ApiPlatform\Symfony\Routing\ApiLoader')
8✔
129
        ->args([
8✔
130
            service('kernel'),
8✔
131
            service('api_platform.metadata.resource.name_collection_factory'),
8✔
132
            service('api_platform.metadata.resource.metadata_collection_factory'),
8✔
133
            service('service_container'),
8✔
134
            '%api_platform.formats%',
8✔
135
            '%api_platform.resource_class_directories%',
8✔
136
            '%api_platform.graphql.enabled%',
8✔
137
            '%api_platform.enable_entrypoint%',
8✔
138
            '%api_platform.enable_docs%',
8✔
139
            '%api_platform.graphql.graphiql.enabled%',
8✔
140
        ])
8✔
141
        ->tag('routing.loader');
8✔
142

143
    $services->set('api_platform.symfony.iri_converter.skolem', 'ApiPlatform\Symfony\Routing\SkolemIriConverter')
8✔
144
        ->args([service('api_platform.router')]);
8✔
145

146
    $services->set('api_platform.api.identifiers_extractor', 'ApiPlatform\Metadata\IdentifiersExtractor')
8✔
147
        ->args([
8✔
148
            service('api_platform.metadata.resource.metadata_collection_factory'),
8✔
149
            service('api_platform.resource_class_resolver'),
8✔
150
            service('api_platform.metadata.property.name_collection_factory'),
8✔
151
            service('api_platform.metadata.property.metadata_factory'),
8✔
152
            service('api_platform.property_accessor'),
8✔
153
        ]);
8✔
154

155
    $services->alias('api_platform.identifiers_extractor', 'api_platform.api.identifiers_extractor');
8✔
156

157
    $services->alias('ApiPlatform\Metadata\IdentifiersExtractorInterface', 'api_platform.api.identifiers_extractor');
8✔
158

159
    $services->set('api_platform.uri_variables.converter', 'ApiPlatform\Metadata\UriVariablesConverter')
8✔
160
        ->args([
8✔
161
            service('api_platform.metadata.property.metadata_factory'),
8✔
162
            service('api_platform.metadata.resource.metadata_collection_factory'),
8✔
163
            tagged_iterator('api_platform.uri_variables.transformer'),
8✔
164
        ]);
8✔
165

166
    $services->set('api_platform.uri_variables.transformer.integer', 'ApiPlatform\Metadata\UriVariableTransformer\IntegerUriVariableTransformer')
8✔
167
        ->tag('api_platform.uri_variables.transformer', ['priority' => -100]);
8✔
168

169
    $services->set('api_platform.uri_variables.transformer.date_time', 'ApiPlatform\Metadata\UriVariableTransformer\DateTimeUriVariableTransformer')
8✔
170
        ->tag('api_platform.uri_variables.transformer', ['priority' => -100]);
8✔
171

172
    $services->alias('api_platform.iri_converter', 'api_platform.symfony.iri_converter');
8✔
173

174
    $services->set('api_platform.symfony.iri_converter', 'ApiPlatform\Symfony\Routing\IriConverter')
8✔
175
        ->args([
8✔
176
            service('api_platform.state_provider.locator'),
8✔
177
            service('api_platform.router'),
8✔
178
            service('api_platform.api.identifiers_extractor'),
8✔
179
            service('api_platform.resource_class_resolver'),
8✔
180
            service('api_platform.metadata.resource.metadata_collection_factory'),
8✔
181
            service('api_platform.uri_variables.converter'),
8✔
182
            service('api_platform.symfony.iri_converter.skolem'),
8✔
183
            service('api_platform.metadata.operation.metadata_factory'),
8✔
184
        ]);
8✔
185

186
    $services->alias('ApiPlatform\Metadata\IriConverterInterface', 'api_platform.symfony.iri_converter');
8✔
187

188
    $services->set('api_platform.state.error_provider', 'ApiPlatform\State\ErrorProvider')
8✔
189
        ->arg('$debug', '%kernel.debug%')
8✔
190
        ->arg('$resourceClassResolver', service('api_platform.resource_class_resolver'))
8✔
191
        ->arg('$resourceMetadataCollectionFactory', service('api_platform.metadata.resource.metadata_collection_factory'))
8✔
192
        ->tag('api_platform.state_provider', ['key' => 'api_platform.state.error_provider']);
8✔
193

194
    $services->set('api_platform.normalizer.constraint_violation_list', 'ApiPlatform\Serializer\ConstraintViolationListNormalizer')
8✔
195
        ->args([
8✔
196
            '%api_platform.validator.serialize_payload_fields%',
8✔
197
            service('api_platform.name_converter')->ignoreOnInvalid(),
8✔
198
        ])
8✔
199
        ->tag('serializer.normalizer', ['priority' => -780]);
8✔
200

201
    $services->set('api_platform.serializer.property_metadata_loader', 'ApiPlatform\Serializer\Mapping\Loader\PropertyMetadataLoader')
8✔
202
        ->args([service('api_platform.metadata.property.name_collection_factory')]);
8✔
203
};
8✔
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc