Skip to content

Commit ae6a75d

Browse files
authored
chore(symfony): custom rule to transform class-string to "use" instructions
1 parent 904728d commit ae6a75d

73 files changed

Lines changed: 1199 additions & 422 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.php-cs-fixer.dist.php

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,10 @@
22

33
declare(strict_types=1);
44

5+
require_once __DIR__ . '/tests/Fixer/SymfonyServiceClassConstantFixer.php';
6+
7+
use ApiPlatform\Tests\Fixer\SymfonyServiceClassConstantFixer;
8+
59
$header = <<<'HEADER'
610
This file is part of the API Platform project.
711
@@ -113,5 +117,10 @@
113117
'property',
114118
],
115119
],
120+
'ApiPlatform/symfony_service_class_constant' => true,
121+
])
122+
->registerCustomFixers([
123+
new SymfonyServiceClassConstantFixer(),
116124
])
117125
->setFinder($finder);
126+

composer.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,7 @@
135135
"friends-of-behat/mink-browserkit-driver": "^1.3.1",
136136
"friends-of-behat/mink-extension": "^2.2",
137137
"friends-of-behat/symfony-extension": "^2.1",
138+
"friendsofphp/php-cs-fixer": "^3.93",
138139
"guzzlehttp/guzzle": "^6.0 || ^7.0",
139140
"illuminate/config": "^11.0 || ^12.0",
140141
"illuminate/contracts": "^11.0 || ^12.0",

src/Symfony/Bundle/Resources/config/api.php

Lines changed: 71 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -13,19 +13,52 @@
1313

1414
namespace Symfony\Component\DependencyInjection\Loader\Configurator;
1515

16+
use ApiPlatform\Metadata\IdentifiersExtractor;
17+
use ApiPlatform\Metadata\IdentifiersExtractorInterface;
18+
use ApiPlatform\Metadata\IriConverterInterface;
19+
use ApiPlatform\Metadata\Operation\DashPathSegmentNameGenerator;
20+
use ApiPlatform\Metadata\Operation\UnderscorePathSegmentNameGenerator;
21+
use ApiPlatform\Metadata\ResourceClassResolver;
22+
use ApiPlatform\Metadata\ResourceClassResolverInterface;
23+
use ApiPlatform\Metadata\UriVariablesConverter;
24+
use ApiPlatform\Metadata\UriVariableTransformer\ApiResourceUriVariableTransformer;
25+
use ApiPlatform\Metadata\UriVariableTransformer\DateTimeUriVariableTransformer;
26+
use ApiPlatform\Metadata\UriVariableTransformer\IntegerUriVariableTransformer;
27+
use ApiPlatform\Metadata\UrlGeneratorInterface;
28+
use ApiPlatform\Metadata\Util\Inflector;
29+
use ApiPlatform\Serializer\ConstraintViolationListNormalizer;
30+
use ApiPlatform\Serializer\Filter\GroupFilter;
31+
use ApiPlatform\Serializer\Filter\PropertyFilter;
32+
use ApiPlatform\Serializer\ItemNormalizer;
33+
use ApiPlatform\Serializer\Mapping\Factory\ClassMetadataFactory;
34+
use ApiPlatform\Serializer\Mapping\Loader\PropertyMetadataLoader;
35+
use ApiPlatform\Serializer\Parameter\SerializerFilterParameterProvider;
36+
use ApiPlatform\Serializer\SerializerContextBuilder;
37+
use ApiPlatform\Serializer\SerializerFilterContextBuilder;
38+
use ApiPlatform\State\ErrorProvider;
39+
use ApiPlatform\State\SerializerContextBuilderInterface;
40+
use ApiPlatform\Symfony\Action\NotExposedAction;
41+
use ApiPlatform\Symfony\Action\NotFoundAction;
42+
use ApiPlatform\Symfony\Routing\ApiLoader;
43+
use ApiPlatform\Symfony\Routing\IriConverter;
44+
use ApiPlatform\Symfony\Routing\Router;
45+
use ApiPlatform\Symfony\Routing\SkolemIriConverter;
46+
use Negotiation\Negotiator;
47+
use Symfony\Component\Serializer\Mapping\Factory\CacheClassMetadataFactory;
48+
1649
return function (ContainerConfigurator $container) {
1750
$services = $container->services();
1851

19-
$services->set('api_platform.action.not_found', 'ApiPlatform\Symfony\Action\NotFoundAction')
52+
$services->set('api_platform.action.not_found', NotFoundAction::class)
2053
->public();
2154

22-
$services->alias('ApiPlatform\Symfony\Action\NotFoundAction', 'api_platform.action.not_found')
55+
$services->alias(NotFoundAction::class, 'api_platform.action.not_found')
2356
->public();
2457

25-
$services->set('api_platform.action.not_exposed', 'ApiPlatform\Symfony\Action\NotExposedAction')
58+
$services->set('api_platform.action.not_exposed', NotExposedAction::class)
2659
->public();
2760

28-
$services->alias('ApiPlatform\Symfony\Action\NotExposedAction', 'api_platform.action.not_exposed')
61+
$services->alias(NotExposedAction::class, 'api_platform.action.not_exposed')
2962
->public();
3063

3164
$services->alias('api_platform.serializer', 'serializer');
@@ -34,54 +67,54 @@
3467

3568
$services->alias('api_platform.property_info', 'property_info');
3669

37-
$services->set('api_platform.negotiator', 'Negotiation\Negotiator');
70+
$services->set('api_platform.negotiator', Negotiator::class);
3871

39-
$services->set('api_platform.resource_class_resolver', 'ApiPlatform\Metadata\ResourceClassResolver')
72+
$services->set('api_platform.resource_class_resolver', ResourceClassResolver::class)
4073
->args([service('api_platform.metadata.resource.name_collection_factory')]);
4174

42-
$services->alias('ApiPlatform\Metadata\ResourceClassResolverInterface', 'api_platform.resource_class_resolver');
75+
$services->alias(ResourceClassResolverInterface::class, 'api_platform.resource_class_resolver');
4376

44-
$services->alias('ApiPlatform\Metadata\UrlGeneratorInterface', 'api_platform.router');
77+
$services->alias(UrlGeneratorInterface::class, 'api_platform.router');
4578

46-
$services->set('api_platform.router', 'ApiPlatform\Symfony\Routing\Router')
79+
$services->set('api_platform.router', Router::class)
4780
->args([
4881
service('router'),
4982
'%api_platform.url_generation_strategy%',
5083
]);
5184

52-
$services->set('api_platform.serializer.context_builder', 'ApiPlatform\Serializer\SerializerContextBuilder')
85+
$services->set('api_platform.serializer.context_builder', SerializerContextBuilder::class)
5386
->arg(0, service('api_platform.metadata.resource.metadata_collection_factory'))
5487
->arg('$debug', '%kernel.debug%');
5588

56-
$services->set('api_platform.serializer.filter_parameter_provider', 'ApiPlatform\Serializer\Parameter\SerializerFilterParameterProvider')
89+
$services->set('api_platform.serializer.filter_parameter_provider', SerializerFilterParameterProvider::class)
5790
->args([service('api_platform.filter_locator')])
5891
->tag('api_platform.parameter_provider', ['key' => 'api_platform.serializer.filter_parameter_provider', 'priority' => -895]);
5992

60-
$services->alias('ApiPlatform\State\SerializerContextBuilderInterface', 'api_platform.serializer.context_builder');
93+
$services->alias(SerializerContextBuilderInterface::class, 'api_platform.serializer.context_builder');
6194

62-
$services->set('api_platform.serializer.context_builder.filter', 'ApiPlatform\Serializer\SerializerFilterContextBuilder')
95+
$services->set('api_platform.serializer.context_builder.filter', SerializerFilterContextBuilder::class)
6396
->decorate('api_platform.serializer.context_builder', null, 0)
6497
->args([
6598
service('api_platform.metadata.resource.metadata_collection_factory'),
6699
service('api_platform.filter_locator'),
67100
service('api_platform.serializer.context_builder.filter.inner'),
68101
]);
69102

70-
$services->set('api_platform.serializer.property_filter', 'ApiPlatform\Serializer\Filter\PropertyFilter')
103+
$services->set('api_platform.serializer.property_filter', PropertyFilter::class)
71104
->abstract()
72105
->arg('$parameterName', 'properties')
73106
->arg('$overrideDefaultProperties', false)
74107
->arg('$whitelist', null)
75108
->arg('$nameConverter', service('api_platform.name_converter')->ignoreOnInvalid());
76109

77-
$services->alias('ApiPlatform\Serializer\Filter\PropertyFilter', 'api_platform.serializer.property_filter');
110+
$services->alias(PropertyFilter::class, 'api_platform.serializer.property_filter');
78111

79-
$services->set('api_platform.serializer.group_filter', 'ApiPlatform\Serializer\Filter\GroupFilter')
112+
$services->set('api_platform.serializer.group_filter', GroupFilter::class)
80113
->abstract();
81114

82-
$services->alias('ApiPlatform\Serializer\Filter\GroupFilter', 'api_platform.serializer.group_filter');
115+
$services->alias(GroupFilter::class, 'api_platform.serializer.group_filter');
83116

84-
$services->set('api_platform.serializer.normalizer.item', 'ApiPlatform\Serializer\ItemNormalizer')
117+
$services->set('api_platform.serializer.normalizer.item', ItemNormalizer::class)
85118
->args([
86119
service('api_platform.metadata.property.name_collection_factory'),
87120
service('api_platform.metadata.property.metadata_factory'),
@@ -98,34 +131,34 @@
98131
])
99132
->tag('serializer.normalizer', ['priority' => -895]);
100133

101-
$services->set('api_platform.serializer.mapping.class_metadata_factory', 'ApiPlatform\Serializer\Mapping\Factory\ClassMetadataFactory')
134+
$services->set('api_platform.serializer.mapping.class_metadata_factory', ClassMetadataFactory::class)
102135
->decorate('serializer.mapping.class_metadata_factory', null, -1)
103136
->args([service('api_platform.serializer.mapping.class_metadata_factory.inner')]);
104137

105-
$services->set('api_platform.serializer.mapping.cache_class_metadata_factory', 'Symfony\Component\Serializer\Mapping\Factory\CacheClassMetadataFactory')
138+
$services->set('api_platform.serializer.mapping.cache_class_metadata_factory', CacheClassMetadataFactory::class)
106139
->decorate('api_platform.serializer.mapping.class_metadata_factory', null, -2)
107140
->args([
108141
service('api_platform.serializer.mapping.cache_class_metadata_factory.inner'),
109142
service('serializer.mapping.cache.symfony'),
110143
]);
111144

112-
$services->set('api_platform.path_segment_name_generator.underscore', 'ApiPlatform\Metadata\Operation\UnderscorePathSegmentNameGenerator');
145+
$services->set('api_platform.path_segment_name_generator.underscore', UnderscorePathSegmentNameGenerator::class);
113146

114-
$services->set('api_platform.path_segment_name_generator.dash', 'ApiPlatform\Metadata\Operation\DashPathSegmentNameGenerator');
147+
$services->set('api_platform.path_segment_name_generator.dash', DashPathSegmentNameGenerator::class);
115148

116-
$services->set('api_platform.metadata.path_segment_name_generator.underscore', 'ApiPlatform\Metadata\Operation\UnderscorePathSegmentNameGenerator')
149+
$services->set('api_platform.metadata.path_segment_name_generator.underscore', UnderscorePathSegmentNameGenerator::class)
117150
->args([service('api_platform.inflector')->nullOnInvalid()]);
118151

119-
$services->set('api_platform.metadata.path_segment_name_generator.dash', 'ApiPlatform\Metadata\Operation\DashPathSegmentNameGenerator')
152+
$services->set('api_platform.metadata.path_segment_name_generator.dash', DashPathSegmentNameGenerator::class)
120153
->args([service('api_platform.inflector')->nullOnInvalid()]);
121154

122-
$services->set('api_platform.metadata.inflector', 'ApiPlatform\Metadata\Util\Inflector');
155+
$services->set('api_platform.metadata.inflector', Inflector::class);
123156

124157
$services->set('api_platform.cache.route_name_resolver')
125158
->parent('cache.system')
126159
->tag('cache.pool');
127160

128-
$services->set('api_platform.route_loader', 'ApiPlatform\Symfony\Routing\ApiLoader')
161+
$services->set('api_platform.route_loader', ApiLoader::class)
129162
->args([
130163
service('kernel'),
131164
service('api_platform.metadata.resource.name_collection_factory'),
@@ -140,10 +173,10 @@
140173
])
141174
->tag('routing.loader');
142175

143-
$services->set('api_platform.symfony.iri_converter.skolem', 'ApiPlatform\Symfony\Routing\SkolemIriConverter')
176+
$services->set('api_platform.symfony.iri_converter.skolem', SkolemIriConverter::class)
144177
->args([service('api_platform.router')]);
145178

146-
$services->set('api_platform.api.identifiers_extractor', 'ApiPlatform\Metadata\IdentifiersExtractor')
179+
$services->set('api_platform.api.identifiers_extractor', IdentifiersExtractor::class)
147180
->args([
148181
service('api_platform.metadata.resource.metadata_collection_factory'),
149182
service('api_platform.resource_class_resolver'),
@@ -154,22 +187,22 @@
154187

155188
$services->alias('api_platform.identifiers_extractor', 'api_platform.api.identifiers_extractor');
156189

157-
$services->alias('ApiPlatform\Metadata\IdentifiersExtractorInterface', 'api_platform.api.identifiers_extractor');
190+
$services->alias(IdentifiersExtractorInterface::class, 'api_platform.api.identifiers_extractor');
158191

159-
$services->set('api_platform.uri_variables.converter', 'ApiPlatform\Metadata\UriVariablesConverter')
192+
$services->set('api_platform.uri_variables.converter', UriVariablesConverter::class)
160193
->args([
161194
service('api_platform.metadata.property.metadata_factory'),
162195
service('api_platform.metadata.resource.metadata_collection_factory'),
163196
tagged_iterator('api_platform.uri_variables.transformer'),
164197
]);
165198

166-
$services->set('api_platform.uri_variables.transformer.integer', 'ApiPlatform\Metadata\UriVariableTransformer\IntegerUriVariableTransformer')
199+
$services->set('api_platform.uri_variables.transformer.integer', IntegerUriVariableTransformer::class)
167200
->tag('api_platform.uri_variables.transformer', ['priority' => -100]);
168201

169-
$services->set('api_platform.uri_variables.transformer.date_time', 'ApiPlatform\Metadata\UriVariableTransformer\DateTimeUriVariableTransformer')
202+
$services->set('api_platform.uri_variables.transformer.date_time', DateTimeUriVariableTransformer::class)
170203
->tag('api_platform.uri_variables.transformer', ['priority' => -100]);
171204

172-
$services->set('api_platform.uri_variables.transformer.api_resource', 'ApiPlatform\Metadata\UriVariableTransformer\ApiResourceUriVariableTransformer')
205+
$services->set('api_platform.uri_variables.transformer.api_resource', ApiResourceUriVariableTransformer::class)
173206
->args([
174207
service('api_platform.api.identifiers_extractor'),
175208
service('api_platform.resource_class_resolver'),
@@ -178,7 +211,7 @@
178211

179212
$services->alias('api_platform.iri_converter', 'api_platform.symfony.iri_converter');
180213

181-
$services->set('api_platform.symfony.iri_converter', 'ApiPlatform\Symfony\Routing\IriConverter')
214+
$services->set('api_platform.symfony.iri_converter', IriConverter::class)
182215
->args([
183216
service('api_platform.state_provider.locator'),
184217
service('api_platform.router'),
@@ -190,21 +223,21 @@
190223
service('api_platform.metadata.operation.metadata_factory'),
191224
]);
192225

193-
$services->alias('ApiPlatform\Metadata\IriConverterInterface', 'api_platform.symfony.iri_converter');
226+
$services->alias(IriConverterInterface::class, 'api_platform.symfony.iri_converter');
194227

195-
$services->set('api_platform.state.error_provider', 'ApiPlatform\State\ErrorProvider')
228+
$services->set('api_platform.state.error_provider', ErrorProvider::class)
196229
->arg('$debug', '%kernel.debug%')
197230
->arg('$resourceClassResolver', service('api_platform.resource_class_resolver'))
198231
->arg('$resourceMetadataCollectionFactory', service('api_platform.metadata.resource.metadata_collection_factory'))
199232
->tag('api_platform.state_provider', ['key' => 'api_platform.state.error_provider']);
200233

201-
$services->set('api_platform.normalizer.constraint_violation_list', 'ApiPlatform\Serializer\ConstraintViolationListNormalizer')
234+
$services->set('api_platform.normalizer.constraint_violation_list', ConstraintViolationListNormalizer::class)
202235
->args([
203236
'%api_platform.validator.serialize_payload_fields%',
204237
service('api_platform.name_converter')->ignoreOnInvalid(),
205238
])
206239
->tag('serializer.normalizer', ['priority' => -780]);
207240

208-
$services->set('api_platform.serializer.property_metadata_loader', 'ApiPlatform\Serializer\Mapping\Loader\PropertyMetadataLoader')
241+
$services->set('api_platform.serializer.property_metadata_loader', PropertyMetadataLoader::class)
209242
->args([service('api_platform.metadata.property.name_collection_factory')]);
210243
};

src/Symfony/Bundle/Resources/config/argument_resolver.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,12 @@
1313

1414
namespace Symfony\Component\DependencyInjection\Loader\Configurator;
1515

16+
use ApiPlatform\Symfony\Bundle\ArgumentResolver\PayloadArgumentResolver;
17+
1618
return static function (ContainerConfigurator $container) {
1719
$services = $container->services();
1820

19-
$services->set('api_platform.argument_resolver.payload', 'ApiPlatform\Symfony\Bundle\ArgumentResolver\PayloadArgumentResolver')
21+
$services->set('api_platform.argument_resolver.payload', PayloadArgumentResolver::class)
2022
->args([
2123
service('api_platform.metadata.resource.metadata_collection_factory'),
2224
service('api_platform.serializer.context_builder'),

src/Symfony/Bundle/Resources/config/data_collector.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,12 @@
1313

1414
namespace Symfony\Component\DependencyInjection\Loader\Configurator;
1515

16+
use ApiPlatform\Symfony\Bundle\DataCollector\RequestDataCollector;
17+
1618
return static function (ContainerConfigurator $container) {
1719
$services = $container->services();
1820

19-
$services->set('api_platform.data_collector.request', 'ApiPlatform\Symfony\Bundle\DataCollector\RequestDataCollector')
21+
$services->set('api_platform.data_collector.request', RequestDataCollector::class)
2022
->args([
2123
service('api_platform.metadata.resource.metadata_collection_factory'),
2224
service('api_platform.filter_locator'),

src/Symfony/Bundle/Resources/config/debug.php

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,18 @@
1313

1414
namespace Symfony\Component\DependencyInjection\Loader\Configurator;
1515

16+
use ApiPlatform\Symfony\Bundle\Command\DebugResourceCommand;
17+
use Symfony\Component\VarDumper\Cloner\VarCloner;
18+
use Symfony\Component\VarDumper\Dumper\CliDumper;
19+
1620
return static function (ContainerConfigurator $container) {
1721
$services = $container->services();
1822

19-
$services->set('debug.var_dumper.cloner', 'Symfony\Component\VarDumper\Cloner\VarCloner');
23+
$services->set('debug.var_dumper.cloner', VarCloner::class);
2024

21-
$services->set('debug.var_dumper.cli_dumper', 'Symfony\Component\VarDumper\Dumper\CliDumper');
25+
$services->set('debug.var_dumper.cli_dumper', CliDumper::class);
2226

23-
$services->set('debug.api_platform.debug_resource.command', 'ApiPlatform\Symfony\Bundle\Command\DebugResourceCommand')
27+
$services->set('debug.api_platform.debug_resource.command', DebugResourceCommand::class)
2428
->args([
2529
service('api_platform.metadata.resource.metadata_collection_factory'),
2630
service('debug.var_dumper.cloner'),

0 commit comments

Comments
 (0)