diff --git a/.php-cs-fixer.dist.php b/.php-cs-fixer.dist.php index b7155b6293..457c7ce6eb 100644 --- a/.php-cs-fixer.dist.php +++ b/.php-cs-fixer.dist.php @@ -2,6 +2,10 @@ declare(strict_types=1); +require_once __DIR__ . '/tests/Fixer/SymfonyServiceClassConstantFixer.php'; + +use ApiPlatform\Tests\Fixer\SymfonyServiceClassConstantFixer; + $header = <<<'HEADER' This file is part of the API Platform project. @@ -113,5 +117,10 @@ 'property', ], ], + 'ApiPlatform/symfony_service_class_constant' => true, + ]) + ->registerCustomFixers([ + new SymfonyServiceClassConstantFixer(), ]) ->setFinder($finder); + diff --git a/composer.json b/composer.json index 1df67d8036..c2f80e5c54 100644 --- a/composer.json +++ b/composer.json @@ -133,6 +133,7 @@ "friends-of-behat/mink-browserkit-driver": "^1.3.1", "friends-of-behat/mink-extension": "^2.2", "friends-of-behat/symfony-extension": "^2.1", + "friendsofphp/php-cs-fixer": "^3.93", "guzzlehttp/guzzle": "^6.0 || ^7.0", "illuminate/config": "^11.0 || ^12.0", "illuminate/contracts": "^11.0 || ^12.0", @@ -144,7 +145,7 @@ "jangregor/phpstan-prophecy": "^2.1.11", "justinrainbow/json-schema": "^6.5.2", "laravel/framework": "^11.0 || ^12.0", - "orchestra/testbench": "^9.1", + "orchestra/testbench": "^10.9", "phpspec/prophecy-phpunit": "^2.2", "phpstan/extension-installer": "^1.1", "phpstan/phpdoc-parser": "^1.29 || ^2.0", diff --git a/src/Symfony/Bundle/Resources/config/api.php b/src/Symfony/Bundle/Resources/config/api.php index 8edb011be3..f3369dc43c 100644 --- a/src/Symfony/Bundle/Resources/config/api.php +++ b/src/Symfony/Bundle/Resources/config/api.php @@ -13,19 +13,52 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; +use ApiPlatform\Metadata\IdentifiersExtractor; +use ApiPlatform\Metadata\IdentifiersExtractorInterface; +use ApiPlatform\Metadata\IriConverterInterface; +use ApiPlatform\Metadata\Operation\DashPathSegmentNameGenerator; +use ApiPlatform\Metadata\Operation\UnderscorePathSegmentNameGenerator; +use ApiPlatform\Metadata\ResourceClassResolver; +use ApiPlatform\Metadata\ResourceClassResolverInterface; +use ApiPlatform\Metadata\UriVariablesConverter; +use ApiPlatform\Metadata\UriVariableTransformer\ApiResourceUriVariableTransformer; +use ApiPlatform\Metadata\UriVariableTransformer\DateTimeUriVariableTransformer; +use ApiPlatform\Metadata\UriVariableTransformer\IntegerUriVariableTransformer; +use ApiPlatform\Metadata\UrlGeneratorInterface; +use ApiPlatform\Metadata\Util\Inflector; +use ApiPlatform\Serializer\ConstraintViolationListNormalizer; +use ApiPlatform\Serializer\Filter\GroupFilter; +use ApiPlatform\Serializer\Filter\PropertyFilter; +use ApiPlatform\Serializer\ItemNormalizer; +use ApiPlatform\Serializer\Mapping\Factory\ClassMetadataFactory; +use ApiPlatform\Serializer\Mapping\Loader\PropertyMetadataLoader; +use ApiPlatform\Serializer\Parameter\SerializerFilterParameterProvider; +use ApiPlatform\Serializer\SerializerContextBuilder; +use ApiPlatform\Serializer\SerializerFilterContextBuilder; +use ApiPlatform\State\ErrorProvider; +use ApiPlatform\State\SerializerContextBuilderInterface; +use ApiPlatform\Symfony\Action\NotExposedAction; +use ApiPlatform\Symfony\Action\NotFoundAction; +use ApiPlatform\Symfony\Routing\ApiLoader; +use ApiPlatform\Symfony\Routing\IriConverter; +use ApiPlatform\Symfony\Routing\Router; +use ApiPlatform\Symfony\Routing\SkolemIriConverter; +use Negotiation\Negotiator; +use Symfony\Component\Serializer\Mapping\Factory\CacheClassMetadataFactory; + return function (ContainerConfigurator $container) { $services = $container->services(); - $services->set('api_platform.action.not_found', 'ApiPlatform\Symfony\Action\NotFoundAction') + $services->set('api_platform.action.not_found', NotFoundAction::class) ->public(); - $services->alias('ApiPlatform\Symfony\Action\NotFoundAction', 'api_platform.action.not_found') + $services->alias(NotFoundAction::class, 'api_platform.action.not_found') ->public(); - $services->set('api_platform.action.not_exposed', 'ApiPlatform\Symfony\Action\NotExposedAction') + $services->set('api_platform.action.not_exposed', NotExposedAction::class) ->public(); - $services->alias('ApiPlatform\Symfony\Action\NotExposedAction', 'api_platform.action.not_exposed') + $services->alias(NotExposedAction::class, 'api_platform.action.not_exposed') ->public(); $services->alias('api_platform.serializer', 'serializer'); @@ -34,32 +67,32 @@ $services->alias('api_platform.property_info', 'property_info'); - $services->set('api_platform.negotiator', 'Negotiation\Negotiator'); + $services->set('api_platform.negotiator', Negotiator::class); - $services->set('api_platform.resource_class_resolver', 'ApiPlatform\Metadata\ResourceClassResolver') + $services->set('api_platform.resource_class_resolver', ResourceClassResolver::class) ->args([service('api_platform.metadata.resource.name_collection_factory')]); - $services->alias('ApiPlatform\Metadata\ResourceClassResolverInterface', 'api_platform.resource_class_resolver'); + $services->alias(ResourceClassResolverInterface::class, 'api_platform.resource_class_resolver'); - $services->alias('ApiPlatform\Metadata\UrlGeneratorInterface', 'api_platform.router'); + $services->alias(UrlGeneratorInterface::class, 'api_platform.router'); - $services->set('api_platform.router', 'ApiPlatform\Symfony\Routing\Router') + $services->set('api_platform.router', Router::class) ->args([ service('router'), '%api_platform.url_generation_strategy%', ]); - $services->set('api_platform.serializer.context_builder', 'ApiPlatform\Serializer\SerializerContextBuilder') + $services->set('api_platform.serializer.context_builder', SerializerContextBuilder::class) ->arg(0, service('api_platform.metadata.resource.metadata_collection_factory')) ->arg('$debug', '%kernel.debug%'); - $services->set('api_platform.serializer.filter_parameter_provider', 'ApiPlatform\Serializer\Parameter\SerializerFilterParameterProvider') + $services->set('api_platform.serializer.filter_parameter_provider', SerializerFilterParameterProvider::class) ->args([service('api_platform.filter_locator')]) ->tag('api_platform.parameter_provider', ['key' => 'api_platform.serializer.filter_parameter_provider', 'priority' => -895]); - $services->alias('ApiPlatform\State\SerializerContextBuilderInterface', 'api_platform.serializer.context_builder'); + $services->alias(SerializerContextBuilderInterface::class, 'api_platform.serializer.context_builder'); - $services->set('api_platform.serializer.context_builder.filter', 'ApiPlatform\Serializer\SerializerFilterContextBuilder') + $services->set('api_platform.serializer.context_builder.filter', SerializerFilterContextBuilder::class) ->decorate('api_platform.serializer.context_builder', null, 0) ->args([ service('api_platform.metadata.resource.metadata_collection_factory'), @@ -67,21 +100,21 @@ service('api_platform.serializer.context_builder.filter.inner'), ]); - $services->set('api_platform.serializer.property_filter', 'ApiPlatform\Serializer\Filter\PropertyFilter') + $services->set('api_platform.serializer.property_filter', PropertyFilter::class) ->abstract() ->arg('$parameterName', 'properties') ->arg('$overrideDefaultProperties', false) ->arg('$whitelist', null) ->arg('$nameConverter', service('api_platform.name_converter')->ignoreOnInvalid()); - $services->alias('ApiPlatform\Serializer\Filter\PropertyFilter', 'api_platform.serializer.property_filter'); + $services->alias(PropertyFilter::class, 'api_platform.serializer.property_filter'); - $services->set('api_platform.serializer.group_filter', 'ApiPlatform\Serializer\Filter\GroupFilter') + $services->set('api_platform.serializer.group_filter', GroupFilter::class) ->abstract(); - $services->alias('ApiPlatform\Serializer\Filter\GroupFilter', 'api_platform.serializer.group_filter'); + $services->alias(GroupFilter::class, 'api_platform.serializer.group_filter'); - $services->set('api_platform.serializer.normalizer.item', 'ApiPlatform\Serializer\ItemNormalizer') + $services->set('api_platform.serializer.normalizer.item', ItemNormalizer::class) ->args([ service('api_platform.metadata.property.name_collection_factory'), service('api_platform.metadata.property.metadata_factory'), @@ -98,34 +131,34 @@ ]) ->tag('serializer.normalizer', ['priority' => -895]); - $services->set('api_platform.serializer.mapping.class_metadata_factory', 'ApiPlatform\Serializer\Mapping\Factory\ClassMetadataFactory') + $services->set('api_platform.serializer.mapping.class_metadata_factory', ClassMetadataFactory::class) ->decorate('serializer.mapping.class_metadata_factory', null, -1) ->args([service('api_platform.serializer.mapping.class_metadata_factory.inner')]); - $services->set('api_platform.serializer.mapping.cache_class_metadata_factory', 'Symfony\Component\Serializer\Mapping\Factory\CacheClassMetadataFactory') + $services->set('api_platform.serializer.mapping.cache_class_metadata_factory', CacheClassMetadataFactory::class) ->decorate('api_platform.serializer.mapping.class_metadata_factory', null, -2) ->args([ service('api_platform.serializer.mapping.cache_class_metadata_factory.inner'), service('serializer.mapping.cache.symfony'), ]); - $services->set('api_platform.path_segment_name_generator.underscore', 'ApiPlatform\Metadata\Operation\UnderscorePathSegmentNameGenerator'); + $services->set('api_platform.path_segment_name_generator.underscore', UnderscorePathSegmentNameGenerator::class); - $services->set('api_platform.path_segment_name_generator.dash', 'ApiPlatform\Metadata\Operation\DashPathSegmentNameGenerator'); + $services->set('api_platform.path_segment_name_generator.dash', DashPathSegmentNameGenerator::class); - $services->set('api_platform.metadata.path_segment_name_generator.underscore', 'ApiPlatform\Metadata\Operation\UnderscorePathSegmentNameGenerator') + $services->set('api_platform.metadata.path_segment_name_generator.underscore', UnderscorePathSegmentNameGenerator::class) ->args([service('api_platform.inflector')->nullOnInvalid()]); - $services->set('api_platform.metadata.path_segment_name_generator.dash', 'ApiPlatform\Metadata\Operation\DashPathSegmentNameGenerator') + $services->set('api_platform.metadata.path_segment_name_generator.dash', DashPathSegmentNameGenerator::class) ->args([service('api_platform.inflector')->nullOnInvalid()]); - $services->set('api_platform.metadata.inflector', 'ApiPlatform\Metadata\Util\Inflector'); + $services->set('api_platform.metadata.inflector', Inflector::class); $services->set('api_platform.cache.route_name_resolver') ->parent('cache.system') ->tag('cache.pool'); - $services->set('api_platform.route_loader', 'ApiPlatform\Symfony\Routing\ApiLoader') + $services->set('api_platform.route_loader', ApiLoader::class) ->args([ service('kernel'), service('api_platform.metadata.resource.name_collection_factory'), @@ -140,10 +173,10 @@ ]) ->tag('routing.loader'); - $services->set('api_platform.symfony.iri_converter.skolem', 'ApiPlatform\Symfony\Routing\SkolemIriConverter') + $services->set('api_platform.symfony.iri_converter.skolem', SkolemIriConverter::class) ->args([service('api_platform.router')]); - $services->set('api_platform.api.identifiers_extractor', 'ApiPlatform\Metadata\IdentifiersExtractor') + $services->set('api_platform.api.identifiers_extractor', IdentifiersExtractor::class) ->args([ service('api_platform.metadata.resource.metadata_collection_factory'), service('api_platform.resource_class_resolver'), @@ -154,22 +187,22 @@ $services->alias('api_platform.identifiers_extractor', 'api_platform.api.identifiers_extractor'); - $services->alias('ApiPlatform\Metadata\IdentifiersExtractorInterface', 'api_platform.api.identifiers_extractor'); + $services->alias(IdentifiersExtractorInterface::class, 'api_platform.api.identifiers_extractor'); - $services->set('api_platform.uri_variables.converter', 'ApiPlatform\Metadata\UriVariablesConverter') + $services->set('api_platform.uri_variables.converter', UriVariablesConverter::class) ->args([ service('api_platform.metadata.property.metadata_factory'), service('api_platform.metadata.resource.metadata_collection_factory'), tagged_iterator('api_platform.uri_variables.transformer'), ]); - $services->set('api_platform.uri_variables.transformer.integer', 'ApiPlatform\Metadata\UriVariableTransformer\IntegerUriVariableTransformer') + $services->set('api_platform.uri_variables.transformer.integer', IntegerUriVariableTransformer::class) ->tag('api_platform.uri_variables.transformer', ['priority' => -100]); - $services->set('api_platform.uri_variables.transformer.date_time', 'ApiPlatform\Metadata\UriVariableTransformer\DateTimeUriVariableTransformer') + $services->set('api_platform.uri_variables.transformer.date_time', DateTimeUriVariableTransformer::class) ->tag('api_platform.uri_variables.transformer', ['priority' => -100]); - $services->set('api_platform.uri_variables.transformer.api_resource', 'ApiPlatform\Metadata\UriVariableTransformer\ApiResourceUriVariableTransformer') + $services->set('api_platform.uri_variables.transformer.api_resource', ApiResourceUriVariableTransformer::class) ->args([ service('api_platform.api.identifiers_extractor'), service('api_platform.resource_class_resolver'), @@ -178,7 +211,7 @@ $services->alias('api_platform.iri_converter', 'api_platform.symfony.iri_converter'); - $services->set('api_platform.symfony.iri_converter', 'ApiPlatform\Symfony\Routing\IriConverter') + $services->set('api_platform.symfony.iri_converter', IriConverter::class) ->args([ service('api_platform.state_provider.locator'), service('api_platform.router'), @@ -190,21 +223,21 @@ service('api_platform.metadata.operation.metadata_factory'), ]); - $services->alias('ApiPlatform\Metadata\IriConverterInterface', 'api_platform.symfony.iri_converter'); + $services->alias(IriConverterInterface::class, 'api_platform.symfony.iri_converter'); - $services->set('api_platform.state.error_provider', 'ApiPlatform\State\ErrorProvider') + $services->set('api_platform.state.error_provider', ErrorProvider::class) ->arg('$debug', '%kernel.debug%') ->arg('$resourceClassResolver', service('api_platform.resource_class_resolver')) ->arg('$resourceMetadataCollectionFactory', service('api_platform.metadata.resource.metadata_collection_factory')) ->tag('api_platform.state_provider', ['key' => 'api_platform.state.error_provider']); - $services->set('api_platform.normalizer.constraint_violation_list', 'ApiPlatform\Serializer\ConstraintViolationListNormalizer') + $services->set('api_platform.normalizer.constraint_violation_list', ConstraintViolationListNormalizer::class) ->args([ '%api_platform.validator.serialize_payload_fields%', service('api_platform.name_converter')->ignoreOnInvalid(), ]) ->tag('serializer.normalizer', ['priority' => -780]); - $services->set('api_platform.serializer.property_metadata_loader', 'ApiPlatform\Serializer\Mapping\Loader\PropertyMetadataLoader') + $services->set('api_platform.serializer.property_metadata_loader', PropertyMetadataLoader::class) ->args([service('api_platform.metadata.property.name_collection_factory')]); }; diff --git a/src/Symfony/Bundle/Resources/config/argument_resolver.php b/src/Symfony/Bundle/Resources/config/argument_resolver.php index 1431dd8444..46c86b8499 100644 --- a/src/Symfony/Bundle/Resources/config/argument_resolver.php +++ b/src/Symfony/Bundle/Resources/config/argument_resolver.php @@ -13,10 +13,12 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; +use ApiPlatform\Symfony\Bundle\ArgumentResolver\PayloadArgumentResolver; + return static function (ContainerConfigurator $container) { $services = $container->services(); - $services->set('api_platform.argument_resolver.payload', 'ApiPlatform\Symfony\Bundle\ArgumentResolver\PayloadArgumentResolver') + $services->set('api_platform.argument_resolver.payload', PayloadArgumentResolver::class) ->args([ service('api_platform.metadata.resource.metadata_collection_factory'), service('api_platform.serializer.context_builder'), diff --git a/src/Symfony/Bundle/Resources/config/data_collector.php b/src/Symfony/Bundle/Resources/config/data_collector.php index ca1819c2d2..c7a5ee1694 100644 --- a/src/Symfony/Bundle/Resources/config/data_collector.php +++ b/src/Symfony/Bundle/Resources/config/data_collector.php @@ -13,10 +13,12 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; +use ApiPlatform\Symfony\Bundle\DataCollector\RequestDataCollector; + return static function (ContainerConfigurator $container) { $services = $container->services(); - $services->set('api_platform.data_collector.request', 'ApiPlatform\Symfony\Bundle\DataCollector\RequestDataCollector') + $services->set('api_platform.data_collector.request', RequestDataCollector::class) ->args([ service('api_platform.metadata.resource.metadata_collection_factory'), service('api_platform.filter_locator'), diff --git a/src/Symfony/Bundle/Resources/config/debug.php b/src/Symfony/Bundle/Resources/config/debug.php index 9b6142e402..86fe34593d 100644 --- a/src/Symfony/Bundle/Resources/config/debug.php +++ b/src/Symfony/Bundle/Resources/config/debug.php @@ -13,14 +13,18 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; +use ApiPlatform\Symfony\Bundle\Command\DebugResourceCommand; +use Symfony\Component\VarDumper\Cloner\VarCloner; +use Symfony\Component\VarDumper\Dumper\CliDumper; + return static function (ContainerConfigurator $container) { $services = $container->services(); - $services->set('debug.var_dumper.cloner', 'Symfony\Component\VarDumper\Cloner\VarCloner'); + $services->set('debug.var_dumper.cloner', VarCloner::class); - $services->set('debug.var_dumper.cli_dumper', 'Symfony\Component\VarDumper\Dumper\CliDumper'); + $services->set('debug.var_dumper.cli_dumper', CliDumper::class); - $services->set('debug.api_platform.debug_resource.command', 'ApiPlatform\Symfony\Bundle\Command\DebugResourceCommand') + $services->set('debug.api_platform.debug_resource.command', DebugResourceCommand::class) ->args([ service('api_platform.metadata.resource.metadata_collection_factory'), service('debug.var_dumper.cloner'), diff --git a/src/Symfony/Bundle/Resources/config/doctrine_mongodb_odm.php b/src/Symfony/Bundle/Resources/config/doctrine_mongodb_odm.php index dd74180d25..db36c8b63c 100644 --- a/src/Symfony/Bundle/Resources/config/doctrine_mongodb_odm.php +++ b/src/Symfony/Bundle/Resources/config/doctrine_mongodb_odm.php @@ -13,32 +13,53 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; +use ApiPlatform\Doctrine\Common\State\PersistProcessor; +use ApiPlatform\Doctrine\Common\State\RemoveProcessor; +use ApiPlatform\Doctrine\Odm\Extension\FilterExtension; +use ApiPlatform\Doctrine\Odm\Extension\OrderExtension; +use ApiPlatform\Doctrine\Odm\Extension\PaginationExtension; +use ApiPlatform\Doctrine\Odm\Extension\ParameterExtension; +use ApiPlatform\Doctrine\Odm\Filter\BooleanFilter; +use ApiPlatform\Doctrine\Odm\Filter\DateFilter; +use ApiPlatform\Doctrine\Odm\Filter\ExistsFilter; +use ApiPlatform\Doctrine\Odm\Filter\NumericFilter; +use ApiPlatform\Doctrine\Odm\Filter\OrderFilter; +use ApiPlatform\Doctrine\Odm\Filter\RangeFilter; +use ApiPlatform\Doctrine\Odm\Filter\SearchFilter; +use ApiPlatform\Doctrine\Odm\Metadata\Property\DoctrineMongoDbOdmPropertyMetadataFactory; +use ApiPlatform\Doctrine\Odm\Metadata\Resource\DoctrineMongoDbOdmResourceCollectionMetadataFactory; +use ApiPlatform\Doctrine\Odm\PropertyInfo\DoctrineExtractor; +use ApiPlatform\Doctrine\Odm\State\CollectionProvider; +use ApiPlatform\Doctrine\Odm\State\ItemProvider; +use ApiPlatform\Doctrine\Odm\State\LinksHandler; +use Doctrine\Persistence\Mapping\ClassMetadataFactory; + return function (ContainerConfigurator $container) { $services = $container->services(); - $services->set('api_platform.doctrine_mongodb.odm.default_document_manager.property_info_extractor', 'ApiPlatform\Doctrine\Odm\PropertyInfo\DoctrineExtractor') + $services->set('api_platform.doctrine_mongodb.odm.default_document_manager.property_info_extractor', DoctrineExtractor::class) ->args([service('doctrine_mongodb.odm.default_document_manager')]) ->tag('property_info.list_extractor', ['priority' => -1001]) ->tag('property_info.type_extractor', ['priority' => -999]) ->tag('property_info.access_extractor', ['priority' => -999]); - $services->set('api_platform.doctrine.metadata_factory', 'Doctrine\Persistence\Mapping\ClassMetadataFactory')->factory([service('doctrine_mongodb.odm.default_document_manager'), 'getMetadataFactory']); + $services->set('api_platform.doctrine.metadata_factory', ClassMetadataFactory::class)->factory([service('doctrine_mongodb.odm.default_document_manager'), 'getMetadataFactory']); - $services->set('api_platform.doctrine_mongodb.odm.state.remove_processor', 'ApiPlatform\Doctrine\Common\State\RemoveProcessor') + $services->set('api_platform.doctrine_mongodb.odm.state.remove_processor', RemoveProcessor::class) ->args([service('doctrine_mongodb')]) ->tag('api_platform.state_processor', ['priority' => -100, 'key' => 'api_platform.doctrine_mongodb.odm.state.remove_processor']) ->tag('api_platform.state_processor', ['priority' => -100, 'key' => 'ApiPlatform\Doctrine\Common\State\RemoveProcessor']); - $services->alias('ApiPlatform\Doctrine\Common\State\RemoveProcessor', 'api_platform.doctrine_mongodb.odm.state.remove_processor'); + $services->alias(RemoveProcessor::class, 'api_platform.doctrine_mongodb.odm.state.remove_processor'); - $services->set('api_platform.doctrine_mongodb.odm.state.persist_processor', 'ApiPlatform\Doctrine\Common\State\PersistProcessor') + $services->set('api_platform.doctrine_mongodb.odm.state.persist_processor', PersistProcessor::class) ->args([service('doctrine_mongodb')]) ->tag('api_platform.state_processor', ['priority' => -100, 'key' => 'api_platform.doctrine_mongodb.odm.state.persist_processor']) ->tag('api_platform.state_processor', ['priority' => -100, 'key' => 'ApiPlatform\Doctrine\Common\State\PersistProcessor']); - $services->alias('ApiPlatform\Doctrine\Common\State\PersistProcessor', 'api_platform.doctrine_mongodb.odm.state.persist_processor'); + $services->alias(PersistProcessor::class, 'api_platform.doctrine_mongodb.odm.state.persist_processor'); - $services->set('api_platform.doctrine_mongodb.odm.search_filter', 'ApiPlatform\Doctrine\Odm\Filter\SearchFilter') + $services->set('api_platform.doctrine_mongodb.odm.search_filter', SearchFilter::class) ->abstract() ->arg(0, service('doctrine_mongodb')) ->arg(1, service('api_platform.iri_converter')) @@ -47,111 +68,111 @@ ->arg(4, service('logger')->ignoreOnInvalid()) ->arg('$nameConverter', service('api_platform.name_converter')->ignoreOnInvalid()); - $services->alias('ApiPlatform\Doctrine\Odm\Filter\SearchFilter', 'api_platform.doctrine_mongodb.odm.search_filter'); + $services->alias(SearchFilter::class, 'api_platform.doctrine_mongodb.odm.search_filter'); $services->set('api_platform.doctrine_mongodb.odm.search_filter.instance') ->parent('api_platform.doctrine_mongodb.odm.search_filter') ->args([[]]); - $services->set('api_platform.doctrine_mongodb.odm.boolean_filter', 'ApiPlatform\Doctrine\Odm\Filter\BooleanFilter') + $services->set('api_platform.doctrine_mongodb.odm.boolean_filter', BooleanFilter::class) ->abstract() ->arg(0, service('doctrine_mongodb')) ->arg(1, service('logger')->ignoreOnInvalid()) ->arg('$nameConverter', service('api_platform.name_converter')->ignoreOnInvalid()); - $services->alias('ApiPlatform\Doctrine\Odm\Filter\BooleanFilter', 'api_platform.doctrine_mongodb.odm.boolean_filter'); + $services->alias(BooleanFilter::class, 'api_platform.doctrine_mongodb.odm.boolean_filter'); $services->set('api_platform.doctrine_mongodb.odm.boolean_filter.instance') ->parent('api_platform.doctrine_mongodb.odm.boolean_filter') ->args([[]]); - $services->set('api_platform.doctrine_mongodb.odm.date_filter', 'ApiPlatform\Doctrine\Odm\Filter\DateFilter') + $services->set('api_platform.doctrine_mongodb.odm.date_filter', DateFilter::class) ->abstract() ->arg(0, service('doctrine_mongodb')) ->arg(1, service('logger')->ignoreOnInvalid()) ->arg('$nameConverter', service('api_platform.name_converter')->ignoreOnInvalid()); - $services->alias('ApiPlatform\Doctrine\Odm\Filter\DateFilter', 'api_platform.doctrine_mongodb.odm.date_filter'); + $services->alias(DateFilter::class, 'api_platform.doctrine_mongodb.odm.date_filter'); $services->set('api_platform.doctrine_mongodb.odm.date_filter.instance') ->parent('api_platform.doctrine_mongodb.odm.date_filter') ->args([[]]); - $services->set('api_platform.doctrine_mongodb.odm.exists_filter', 'ApiPlatform\Doctrine\Odm\Filter\ExistsFilter') + $services->set('api_platform.doctrine_mongodb.odm.exists_filter', ExistsFilter::class) ->abstract() ->arg(0, service('doctrine_mongodb')) ->arg(1, service('logger')->ignoreOnInvalid()) ->arg('$existsParameterName', '%api_platform.collection.exists_parameter_name%') ->arg('$nameConverter', service('api_platform.name_converter')->ignoreOnInvalid()); - $services->alias('ApiPlatform\Doctrine\Odm\Filter\ExistsFilter', 'api_platform.doctrine_mongodb.odm.exists_filter'); + $services->alias(ExistsFilter::class, 'api_platform.doctrine_mongodb.odm.exists_filter'); $services->set('api_platform.doctrine_mongodb.odm.exists_filter.instance') ->parent('api_platform.doctrine_mongodb.odm.exists_filter') ->args([[]]); - $services->set('api_platform.doctrine_mongodb.odm.numeric_filter', 'ApiPlatform\Doctrine\Odm\Filter\NumericFilter') + $services->set('api_platform.doctrine_mongodb.odm.numeric_filter', NumericFilter::class) ->abstract() ->arg(0, service('doctrine_mongodb')) ->arg(1, service('logger')->ignoreOnInvalid()) ->arg('$nameConverter', service('api_platform.name_converter')->ignoreOnInvalid()); - $services->alias('ApiPlatform\Doctrine\Odm\Filter\NumericFilter', 'api_platform.doctrine_mongodb.odm.numeric_filter'); + $services->alias(NumericFilter::class, 'api_platform.doctrine_mongodb.odm.numeric_filter'); $services->set('api_platform.doctrine_mongodb.odm.numeric_filter.instance') ->parent('api_platform.doctrine_mongodb.odm.numeric_filter') ->args([[]]); - $services->set('api_platform.doctrine_mongodb.odm.order_filter', 'ApiPlatform\Doctrine\Odm\Filter\OrderFilter') + $services->set('api_platform.doctrine_mongodb.odm.order_filter', OrderFilter::class) ->abstract() ->arg(0, service('doctrine_mongodb')) ->arg(1, '%api_platform.collection.order_parameter_name%') ->arg(2, service('logger')->ignoreOnInvalid()) ->arg('$nameConverter', service('api_platform.name_converter')->ignoreOnInvalid()); - $services->alias('ApiPlatform\Doctrine\Odm\Filter\OrderFilter', 'api_platform.doctrine_mongodb.odm.order_filter'); + $services->alias(OrderFilter::class, 'api_platform.doctrine_mongodb.odm.order_filter'); $services->set('api_platform.doctrine_mongodb.odm.order_filter.instance') ->parent('api_platform.doctrine_mongodb.odm.order_filter') ->args([[]]); - $services->set('api_platform.doctrine_mongodb.odm.range_filter', 'ApiPlatform\Doctrine\Odm\Filter\RangeFilter') + $services->set('api_platform.doctrine_mongodb.odm.range_filter', RangeFilter::class) ->abstract() ->arg(0, service('doctrine_mongodb')) ->arg(1, service('logger')->ignoreOnInvalid()) ->arg('$nameConverter', service('api_platform.name_converter')->ignoreOnInvalid()); - $services->alias('ApiPlatform\Doctrine\Odm\Filter\RangeFilter', 'api_platform.doctrine_mongodb.odm.range_filter'); + $services->alias(RangeFilter::class, 'api_platform.doctrine_mongodb.odm.range_filter'); $services->set('api_platform.doctrine_mongodb.odm.range_filter.instance') ->parent('api_platform.doctrine_mongodb.odm.range_filter') ->args([[]]); - $services->set('api_platform.doctrine_mongodb.odm.aggregation_extension.filter', 'ApiPlatform\Doctrine\Odm\Extension\FilterExtension') + $services->set('api_platform.doctrine_mongodb.odm.aggregation_extension.filter', FilterExtension::class) ->args([service('api_platform.filter_locator')]) ->tag('api_platform.doctrine_mongodb.odm.aggregation_extension.collection', ['priority' => 32]); - $services->alias('ApiPlatform\Doctrine\Odm\Extension\FilterExtension', 'api_platform.doctrine_mongodb.odm.aggregation_extension.filter'); + $services->alias(FilterExtension::class, 'api_platform.doctrine_mongodb.odm.aggregation_extension.filter'); - $services->set('api_platform.doctrine_mongodb.odm.aggregation_extension.pagination', 'ApiPlatform\Doctrine\Odm\Extension\PaginationExtension') + $services->set('api_platform.doctrine_mongodb.odm.aggregation_extension.pagination', PaginationExtension::class) ->args([ service('doctrine_mongodb'), service('api_platform.pagination'), ]) ->tag('api_platform.doctrine_mongodb.odm.aggregation_extension.collection'); - $services->alias('ApiPlatform\Doctrine\Odm\Extension\PaginationExtension', 'api_platform.doctrine_mongodb.odm.aggregation_extension.pagination'); + $services->alias(PaginationExtension::class, 'api_platform.doctrine_mongodb.odm.aggregation_extension.pagination'); - $services->set('api_platform.doctrine_mongodb.odm.aggregation_extension.order', 'ApiPlatform\Doctrine\Odm\Extension\OrderExtension') + $services->set('api_platform.doctrine_mongodb.odm.aggregation_extension.order', OrderExtension::class) ->args([ '%api_platform.collection.order%', service('doctrine_mongodb'), ]) ->tag('api_platform.doctrine_mongodb.odm.aggregation_extension.collection', ['priority' => 16]); - $services->alias('ApiPlatform\Doctrine\Odm\Extension\OrderExtension', 'api_platform.doctrine_mongodb.odm.aggregation_extension.order'); + $services->alias(OrderExtension::class, 'api_platform.doctrine_mongodb.odm.aggregation_extension.order'); - $services->set('api_platform.doctrine_mongodb.odm.extension.parameter_extension', 'ApiPlatform\Doctrine\Odm\Extension\ParameterExtension') + $services->set('api_platform.doctrine_mongodb.odm.extension.parameter_extension', ParameterExtension::class) ->args([ service('api_platform.filter_locator'), service('doctrine_mongodb')->nullOnInvalid(), @@ -160,16 +181,16 @@ ->tag('api_platform.doctrine_mongodb.odm.aggregation_extension.collection', ['priority' => 32]) ->tag('api_platform.doctrine_mongodb.odm.aggregation_extension.item'); - $services->alias('ApiPlatform\Doctrine\Odm\Extension\ParameterExtension', 'api_platform.doctrine_mongodb.odm.extension.parameter_extension'); + $services->alias(ParameterExtension::class, 'api_platform.doctrine_mongodb.odm.extension.parameter_extension'); - $services->set('api_platform.doctrine_mongodb.odm.metadata.property.metadata_factory', 'ApiPlatform\Doctrine\Odm\Metadata\Property\DoctrineMongoDbOdmPropertyMetadataFactory') + $services->set('api_platform.doctrine_mongodb.odm.metadata.property.metadata_factory', DoctrineMongoDbOdmPropertyMetadataFactory::class) ->decorate('api_platform.metadata.property.metadata_factory', null, 40) ->args([ service('doctrine_mongodb'), service('api_platform.doctrine_mongodb.odm.metadata.property.metadata_factory.inner'), ]); - $services->set('api_platform.doctrine_mongodb.odm.state.collection_provider', 'ApiPlatform\Doctrine\Odm\State\CollectionProvider') + $services->set('api_platform.doctrine_mongodb.odm.state.collection_provider', CollectionProvider::class) ->args([ service('api_platform.metadata.resource.metadata_collection_factory'), service('doctrine_mongodb'), @@ -179,9 +200,9 @@ ->tag('api_platform.state_provider', ['priority' => -100, 'key' => 'ApiPlatform\Doctrine\Odm\State\CollectionProvider']) ->tag('api_platform.state_provider', ['priority' => -100, 'key' => 'api_platform.doctrine_mongodb.odm.state.collection_provider']); - $services->alias('ApiPlatform\Doctrine\Odm\State\CollectionProvider', 'api_platform.doctrine_mongodb.odm.state.collection_provider'); + $services->alias(CollectionProvider::class, 'api_platform.doctrine_mongodb.odm.state.collection_provider'); - $services->set('api_platform.doctrine_mongodb.odm.state.item_provider', 'ApiPlatform\Doctrine\Odm\State\ItemProvider') + $services->set('api_platform.doctrine_mongodb.odm.state.item_provider', ItemProvider::class) ->args([ service('api_platform.metadata.resource.metadata_collection_factory'), service('doctrine_mongodb'), @@ -191,18 +212,18 @@ ->tag('api_platform.state_provider', ['priority' => -100, 'key' => 'ApiPlatform\Doctrine\Odm\State\ItemProvider']) ->tag('api_platform.state_provider', ['priority' => -100, 'key' => 'api_platform.doctrine_mongodb.odm.state.item_provider']); - $services->alias('ApiPlatform\Doctrine\Odm\State\ItemProvider', 'api_platform.doctrine_mongodb.odm.state.item_provider'); + $services->alias(ItemProvider::class, 'api_platform.doctrine_mongodb.odm.state.item_provider'); $services->alias('api_platform.state.item_provider', 'ApiPlatform\Doctrine\Odm\State\ItemProvider'); - $services->set('api_platform.doctrine.odm.metadata.resource.metadata_collection_factory', 'ApiPlatform\Doctrine\Odm\Metadata\Resource\DoctrineMongoDbOdmResourceCollectionMetadataFactory') + $services->set('api_platform.doctrine.odm.metadata.resource.metadata_collection_factory', DoctrineMongoDbOdmResourceCollectionMetadataFactory::class) ->decorate('api_platform.metadata.resource.metadata_collection_factory', null, 40) ->args([ service('doctrine_mongodb'), service('api_platform.doctrine.odm.metadata.resource.metadata_collection_factory.inner'), ]); - $services->set('api_platform.doctrine.odm.links_handler', 'ApiPlatform\Doctrine\Odm\State\LinksHandler') + $services->set('api_platform.doctrine.odm.links_handler', LinksHandler::class) ->args([ service('api_platform.metadata.resource.metadata_collection_factory'), service('doctrine_mongodb'), diff --git a/src/Symfony/Bundle/Resources/config/doctrine_odm_mercure_publisher.php b/src/Symfony/Bundle/Resources/config/doctrine_odm_mercure_publisher.php index 0e24d2ecf9..6cb90c9dcf 100644 --- a/src/Symfony/Bundle/Resources/config/doctrine_odm_mercure_publisher.php +++ b/src/Symfony/Bundle/Resources/config/doctrine_odm_mercure_publisher.php @@ -13,10 +13,12 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; +use ApiPlatform\Symfony\Doctrine\EventListener\PublishMercureUpdatesListener; + return static function (ContainerConfigurator $container) { $services = $container->services(); - $services->set('api_platform.doctrine_mongodb.odm.listener.mercure.publish', 'ApiPlatform\Symfony\Doctrine\EventListener\PublishMercureUpdatesListener') + $services->set('api_platform.doctrine_mongodb.odm.listener.mercure.publish', PublishMercureUpdatesListener::class) ->args([ service('api_platform.resource_class_resolver'), service('api_platform.symfony.iri_converter'), diff --git a/src/Symfony/Bundle/Resources/config/doctrine_orm.php b/src/Symfony/Bundle/Resources/config/doctrine_orm.php index 5750452257..894295926f 100644 --- a/src/Symfony/Bundle/Resources/config/doctrine_orm.php +++ b/src/Symfony/Bundle/Resources/config/doctrine_orm.php @@ -13,26 +13,50 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; +use ApiPlatform\Doctrine\Common\State\PersistProcessor; +use ApiPlatform\Doctrine\Common\State\RemoveProcessor; +use ApiPlatform\Doctrine\Orm\Extension\EagerLoadingExtension; +use ApiPlatform\Doctrine\Orm\Extension\FilterEagerLoadingExtension; +use ApiPlatform\Doctrine\Orm\Extension\FilterExtension; +use ApiPlatform\Doctrine\Orm\Extension\OrderExtension; +use ApiPlatform\Doctrine\Orm\Extension\PaginationExtension; +use ApiPlatform\Doctrine\Orm\Extension\ParameterExtension; +use ApiPlatform\Doctrine\Orm\Filter\BackedEnumFilter; +use ApiPlatform\Doctrine\Orm\Filter\BooleanFilter; +use ApiPlatform\Doctrine\Orm\Filter\DateFilter; +use ApiPlatform\Doctrine\Orm\Filter\ExistsFilter; +use ApiPlatform\Doctrine\Orm\Filter\NumericFilter; +use ApiPlatform\Doctrine\Orm\Filter\OrderFilter; +use ApiPlatform\Doctrine\Orm\Filter\RangeFilter; +use ApiPlatform\Doctrine\Orm\Filter\SearchFilter; +use ApiPlatform\Doctrine\Orm\Metadata\Property\DoctrineOrmPropertyMetadataFactory; +use ApiPlatform\Doctrine\Orm\Metadata\Resource\DoctrineOrmLinkFactory; +use ApiPlatform\Doctrine\Orm\Metadata\Resource\DoctrineOrmResourceCollectionMetadataFactory; +use ApiPlatform\Doctrine\Orm\State\CollectionProvider; +use ApiPlatform\Doctrine\Orm\State\ItemProvider; +use ApiPlatform\Doctrine\Orm\State\LinksHandler; +use Doctrine\Persistence\Mapping\ClassMetadataFactory; + return function (ContainerConfigurator $container) { $services = $container->services(); - $services->set('api_platform.doctrine.metadata_factory', 'Doctrine\Persistence\Mapping\ClassMetadataFactory')->factory([service('doctrine.orm.default_entity_manager'), 'getMetadataFactory']); + $services->set('api_platform.doctrine.metadata_factory', ClassMetadataFactory::class)->factory([service('doctrine.orm.default_entity_manager'), 'getMetadataFactory']); - $services->set('api_platform.doctrine.orm.state.remove_processor', 'ApiPlatform\Doctrine\Common\State\RemoveProcessor') + $services->set('api_platform.doctrine.orm.state.remove_processor', RemoveProcessor::class) ->args([service('doctrine')]) ->tag('api_platform.state_processor', ['priority' => -100, 'key' => 'api_platform.doctrine.orm.state.remove_processor']) ->tag('api_platform.state_processor', ['priority' => -100, 'key' => 'ApiPlatform\Doctrine\Common\State\RemoveProcessor']); - $services->alias('ApiPlatform\Doctrine\Common\State\RemoveProcessor', 'api_platform.doctrine.orm.state.remove_processor'); + $services->alias(RemoveProcessor::class, 'api_platform.doctrine.orm.state.remove_processor'); - $services->set('api_platform.doctrine.orm.state.persist_processor', 'ApiPlatform\Doctrine\Common\State\PersistProcessor') + $services->set('api_platform.doctrine.orm.state.persist_processor', PersistProcessor::class) ->args([service('doctrine')]) ->tag('api_platform.state_processor', ['priority' => -100, 'key' => 'api_platform.doctrine.orm.state.persist_processor']) ->tag('api_platform.state_processor', ['priority' => -100, 'key' => 'ApiPlatform\Doctrine\Common\State\PersistProcessor']); - $services->alias('ApiPlatform\Doctrine\Common\State\PersistProcessor', 'api_platform.doctrine.orm.state.persist_processor'); + $services->alias(PersistProcessor::class, 'api_platform.doctrine.orm.state.persist_processor'); - $services->set('api_platform.doctrine.orm.order_filter', 'ApiPlatform\Doctrine\Orm\Filter\OrderFilter') + $services->set('api_platform.doctrine.orm.order_filter', OrderFilter::class) ->abstract() ->arg(0, service('doctrine')) ->arg(1, '%api_platform.collection.order_parameter_name%') @@ -40,86 +64,86 @@ ->arg('$nameConverter', service('api_platform.name_converter')->ignoreOnInvalid()) ->arg('$orderNullsComparison', '%api_platform.collection.order_nulls_comparison%'); - $services->alias('ApiPlatform\Doctrine\Orm\Filter\OrderFilter', 'api_platform.doctrine.orm.order_filter'); + $services->alias(OrderFilter::class, 'api_platform.doctrine.orm.order_filter'); $services->set('api_platform.doctrine.orm.order_filter.instance') ->parent('api_platform.doctrine.orm.order_filter') ->args([[]]); - $services->set('api_platform.doctrine.orm.range_filter', 'ApiPlatform\Doctrine\Orm\Filter\RangeFilter') + $services->set('api_platform.doctrine.orm.range_filter', RangeFilter::class) ->abstract() ->arg(0, service('doctrine')) ->arg(1, service('logger')->ignoreOnInvalid()) ->arg('$nameConverter', service('api_platform.name_converter')->ignoreOnInvalid()); - $services->alias('ApiPlatform\Doctrine\Orm\Filter\RangeFilter', 'api_platform.doctrine.orm.range_filter'); + $services->alias(RangeFilter::class, 'api_platform.doctrine.orm.range_filter'); $services->set('api_platform.doctrine.orm.range_filter.instance') ->parent('api_platform.doctrine.orm.range_filter') ->args([[]]); - $services->set('api_platform.doctrine.orm.date_filter', 'ApiPlatform\Doctrine\Orm\Filter\DateFilter') + $services->set('api_platform.doctrine.orm.date_filter', DateFilter::class) ->abstract() ->arg(0, service('doctrine')) ->arg(1, service('logger')->ignoreOnInvalid()) ->arg('$nameConverter', service('api_platform.name_converter')->ignoreOnInvalid()); - $services->alias('ApiPlatform\Doctrine\Orm\Filter\DateFilter', 'api_platform.doctrine.orm.date_filter'); + $services->alias(DateFilter::class, 'api_platform.doctrine.orm.date_filter'); $services->set('api_platform.doctrine.orm.date_filter.instance') ->parent('api_platform.doctrine.orm.date_filter') ->args([[]]); - $services->set('api_platform.doctrine.orm.backed_enum_filter', 'ApiPlatform\Doctrine\Orm\Filter\BackedEnumFilter') + $services->set('api_platform.doctrine.orm.backed_enum_filter', BackedEnumFilter::class) ->abstract() ->arg(0, service('doctrine')) ->arg(1, service('logger')->ignoreOnInvalid()) ->arg('$nameConverter', service('api_platform.name_converter')->ignoreOnInvalid()); - $services->alias('ApiPlatform\Doctrine\Orm\Filter\BackedEnumFilter', 'api_platform.doctrine.orm.backed_enum_filter'); + $services->alias(BackedEnumFilter::class, 'api_platform.doctrine.orm.backed_enum_filter'); $services->set('api_platform.doctrine.orm.backed_enum_filter.instance') ->parent('api_platform.doctrine.orm.backed_enum_filter') ->args([[]]); - $services->set('api_platform.doctrine.orm.boolean_filter', 'ApiPlatform\Doctrine\Orm\Filter\BooleanFilter') + $services->set('api_platform.doctrine.orm.boolean_filter', BooleanFilter::class) ->abstract() ->arg(0, service('doctrine')) ->arg(1, service('logger')->ignoreOnInvalid()) ->arg('$nameConverter', service('api_platform.name_converter')->ignoreOnInvalid()); - $services->alias('ApiPlatform\Doctrine\Orm\Filter\BooleanFilter', 'api_platform.doctrine.orm.boolean_filter'); + $services->alias(BooleanFilter::class, 'api_platform.doctrine.orm.boolean_filter'); $services->set('api_platform.doctrine.orm.boolean_filter.instance') ->parent('api_platform.doctrine.orm.boolean_filter') ->args([[]]); - $services->set('api_platform.doctrine.orm.numeric_filter', 'ApiPlatform\Doctrine\Orm\Filter\NumericFilter') + $services->set('api_platform.doctrine.orm.numeric_filter', NumericFilter::class) ->abstract() ->arg(0, service('doctrine')) ->arg(1, service('logger')->ignoreOnInvalid()) ->arg('$nameConverter', service('api_platform.name_converter')->ignoreOnInvalid()); - $services->alias('ApiPlatform\Doctrine\Orm\Filter\NumericFilter', 'api_platform.doctrine.orm.numeric_filter'); + $services->alias(NumericFilter::class, 'api_platform.doctrine.orm.numeric_filter'); $services->set('api_platform.doctrine.orm.numeric_filter.instance') ->parent('api_platform.doctrine.orm.numeric_filter') ->args([[]]); - $services->set('api_platform.doctrine.orm.exists_filter', 'ApiPlatform\Doctrine\Orm\Filter\ExistsFilter') + $services->set('api_platform.doctrine.orm.exists_filter', ExistsFilter::class) ->abstract() ->arg(0, service('doctrine')) ->arg(1, service('logger')->ignoreOnInvalid()) ->arg('$existsParameterName', '%api_platform.collection.exists_parameter_name%') ->arg('$nameConverter', service('api_platform.name_converter')->ignoreOnInvalid()); - $services->alias('ApiPlatform\Doctrine\Orm\Filter\ExistsFilter', 'api_platform.doctrine.orm.exists_filter'); + $services->alias(ExistsFilter::class, 'api_platform.doctrine.orm.exists_filter'); $services->set('api_platform.doctrine.orm.exists_filter.instance') ->parent('api_platform.doctrine.orm.exists_filter') ->args([[]]); - $services->set('api_platform.doctrine.orm.query_extension.eager_loading', 'ApiPlatform\Doctrine\Orm\Extension\EagerLoadingExtension') + $services->set('api_platform.doctrine.orm.query_extension.eager_loading', EagerLoadingExtension::class) ->args([ service('api_platform.metadata.property.name_collection_factory'), service('api_platform.metadata.property.metadata_factory'), @@ -131,39 +155,39 @@ ->tag('api_platform.doctrine.orm.query_extension.item', ['priority' => -8]) ->tag('api_platform.doctrine.orm.query_extension.collection', ['priority' => -18]); - $services->alias('ApiPlatform\Doctrine\Orm\Extension\EagerLoadingExtension', 'api_platform.doctrine.orm.query_extension.eager_loading'); + $services->alias(EagerLoadingExtension::class, 'api_platform.doctrine.orm.query_extension.eager_loading'); - $services->set('api_platform.doctrine.orm.query_extension.filter', 'ApiPlatform\Doctrine\Orm\Extension\FilterExtension') + $services->set('api_platform.doctrine.orm.query_extension.filter', FilterExtension::class) ->args([service('api_platform.filter_locator')]) ->tag('api_platform.doctrine.orm.query_extension.collection', ['priority' => -16]); - $services->alias('ApiPlatform\Doctrine\Orm\Extension\FilterExtension', 'api_platform.doctrine.orm.query_extension.filter'); + $services->alias(FilterExtension::class, 'api_platform.doctrine.orm.query_extension.filter'); - $services->set('api_platform.doctrine.orm.query_extension.filter_eager_loading', 'ApiPlatform\Doctrine\Orm\Extension\FilterEagerLoadingExtension') + $services->set('api_platform.doctrine.orm.query_extension.filter_eager_loading', FilterEagerLoadingExtension::class) ->args([ '%api_platform.eager_loading.force_eager%', service('api_platform.resource_class_resolver'), ]) ->tag('api_platform.doctrine.orm.query_extension.collection', ['priority' => -17]); - $services->alias('ApiPlatform\Doctrine\Orm\Extension\FilterEagerLoadingExtension', 'api_platform.doctrine.orm.query_extension.filter_eager_loading'); + $services->alias(FilterEagerLoadingExtension::class, 'api_platform.doctrine.orm.query_extension.filter_eager_loading'); - $services->set('api_platform.doctrine.orm.query_extension.pagination', 'ApiPlatform\Doctrine\Orm\Extension\PaginationExtension') + $services->set('api_platform.doctrine.orm.query_extension.pagination', PaginationExtension::class) ->args([ service('doctrine'), service('api_platform.pagination'), ]) ->tag('api_platform.doctrine.orm.query_extension.collection', ['priority' => -64]); - $services->alias('ApiPlatform\Doctrine\Orm\Extension\PaginationExtension', 'api_platform.doctrine.orm.query_extension.pagination'); + $services->alias(PaginationExtension::class, 'api_platform.doctrine.orm.query_extension.pagination'); - $services->set('api_platform.doctrine.orm.query_extension.order', 'ApiPlatform\Doctrine\Orm\Extension\OrderExtension') + $services->set('api_platform.doctrine.orm.query_extension.order', OrderExtension::class) ->args(['%api_platform.collection.order%']) ->tag('api_platform.doctrine.orm.query_extension.collection', ['priority' => -32]); - $services->alias('ApiPlatform\Doctrine\Orm\Extension\OrderExtension', 'api_platform.doctrine.orm.query_extension.order'); + $services->alias(OrderExtension::class, 'api_platform.doctrine.orm.query_extension.order'); - $services->set('api_platform.doctrine.orm.extension.parameter_extension', 'ApiPlatform\Doctrine\Orm\Extension\ParameterExtension') + $services->set('api_platform.doctrine.orm.extension.parameter_extension', ParameterExtension::class) ->args([ service('api_platform.filter_locator'), service('doctrine')->nullOnInvalid(), @@ -172,16 +196,16 @@ ->tag('api_platform.doctrine.orm.query_extension.collection', ['priority' => -16]) ->tag('api_platform.doctrine.orm.query_extension.item', ['priority' => -9]); - $services->alias('ApiPlatform\Doctrine\Orm\Extension\ParameterExtension', 'api_platform.doctrine.orm.extension.parameter_extension'); + $services->alias(ParameterExtension::class, 'api_platform.doctrine.orm.extension.parameter_extension'); - $services->set('api_platform.doctrine.orm.metadata.property.metadata_factory', 'ApiPlatform\Doctrine\Orm\Metadata\Property\DoctrineOrmPropertyMetadataFactory') + $services->set('api_platform.doctrine.orm.metadata.property.metadata_factory', DoctrineOrmPropertyMetadataFactory::class) ->decorate('api_platform.metadata.property.metadata_factory', null, 40) ->args([ service('doctrine'), service('api_platform.doctrine.orm.metadata.property.metadata_factory.inner'), ]); - $services->set('api_platform.doctrine.orm.state.collection_provider', 'ApiPlatform\Doctrine\Orm\State\CollectionProvider') + $services->set('api_platform.doctrine.orm.state.collection_provider', CollectionProvider::class) ->args([ service('api_platform.metadata.resource.metadata_collection_factory'), service('doctrine'), @@ -191,9 +215,9 @@ ->tag('api_platform.state_provider', ['priority' => -100, 'key' => 'ApiPlatform\Doctrine\Orm\State\CollectionProvider']) ->tag('api_platform.state_provider', ['priority' => -100, 'key' => 'api_platform.doctrine.orm.state.collection_provider']); - $services->alias('ApiPlatform\Doctrine\Orm\State\CollectionProvider', 'api_platform.doctrine.orm.state.collection_provider'); + $services->alias(CollectionProvider::class, 'api_platform.doctrine.orm.state.collection_provider'); - $services->set('api_platform.doctrine.orm.state.item_provider', 'ApiPlatform\Doctrine\Orm\State\ItemProvider') + $services->set('api_platform.doctrine.orm.state.item_provider', ItemProvider::class) ->args([ service('api_platform.metadata.resource.metadata_collection_factory'), service('doctrine'), @@ -203,11 +227,11 @@ ->tag('api_platform.state_provider', ['priority' => -100, 'key' => 'ApiPlatform\Doctrine\Orm\State\ItemProvider']) ->tag('api_platform.state_provider', ['priority' => -100, 'key' => 'api_platform.doctrine.orm.state.item_provider']); - $services->alias('ApiPlatform\Doctrine\Orm\State\ItemProvider', 'api_platform.doctrine.orm.state.item_provider'); + $services->alias(ItemProvider::class, 'api_platform.doctrine.orm.state.item_provider'); $services->alias('api_platform.state.item_provider', 'ApiPlatform\Doctrine\Orm\State\ItemProvider'); - $services->set('api_platform.doctrine.orm.search_filter', 'ApiPlatform\Doctrine\Orm\Filter\SearchFilter') + $services->set('api_platform.doctrine.orm.search_filter', SearchFilter::class) ->abstract() ->arg(0, service('doctrine')) ->arg(1, service('api_platform.iri_converter')) @@ -216,20 +240,20 @@ ->arg('$identifiersExtractor', service('api_platform.identifiers_extractor')->ignoreOnInvalid()) ->arg('$nameConverter', service('api_platform.name_converter')->ignoreOnInvalid()); - $services->alias('ApiPlatform\Doctrine\Orm\Filter\SearchFilter', 'api_platform.doctrine.orm.search_filter'); + $services->alias(SearchFilter::class, 'api_platform.doctrine.orm.search_filter'); $services->set('api_platform.doctrine.orm.search_filter.instance') ->parent('api_platform.doctrine.orm.search_filter') ->args([[]]); - $services->set('api_platform.doctrine.orm.metadata.resource.metadata_collection_factory', 'ApiPlatform\Doctrine\Orm\Metadata\Resource\DoctrineOrmResourceCollectionMetadataFactory') + $services->set('api_platform.doctrine.orm.metadata.resource.metadata_collection_factory', DoctrineOrmResourceCollectionMetadataFactory::class) ->decorate('api_platform.metadata.resource.metadata_collection_factory', null, 40) ->args([ service('doctrine'), service('api_platform.doctrine.orm.metadata.resource.metadata_collection_factory.inner'), ]); - $services->set('api_platform.doctrine.orm.metadata.resource.link_factory', 'ApiPlatform\Doctrine\Orm\Metadata\Resource\DoctrineOrmLinkFactory') + $services->set('api_platform.doctrine.orm.metadata.resource.link_factory', DoctrineOrmLinkFactory::class) ->decorate('api_platform.metadata.resource.link_factory', null, 40) ->args([ service('doctrine'), @@ -238,7 +262,7 @@ service('api_platform.doctrine.orm.metadata.resource.link_factory.inner'), ]); - $services->set('api_platform.doctrine.orm.links_handler', 'ApiPlatform\Doctrine\Orm\State\LinksHandler') + $services->set('api_platform.doctrine.orm.links_handler', LinksHandler::class) ->args([ service('api_platform.metadata.resource.metadata_collection_factory'), service('doctrine'), diff --git a/src/Symfony/Bundle/Resources/config/doctrine_orm_http_cache_purger.php b/src/Symfony/Bundle/Resources/config/doctrine_orm_http_cache_purger.php index 29f2fde127..cce74a0060 100644 --- a/src/Symfony/Bundle/Resources/config/doctrine_orm_http_cache_purger.php +++ b/src/Symfony/Bundle/Resources/config/doctrine_orm_http_cache_purger.php @@ -13,10 +13,12 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; +use ApiPlatform\Symfony\Doctrine\EventListener\PurgeHttpCacheListener; + return static function (ContainerConfigurator $container) { $services = $container->services(); - $services->set('api_platform.doctrine.listener.http_cache.purge', 'ApiPlatform\Symfony\Doctrine\EventListener\PurgeHttpCacheListener') + $services->set('api_platform.doctrine.listener.http_cache.purge', PurgeHttpCacheListener::class) ->args([ service('api_platform.http_cache.purger'), service('api_platform.iri_converter'), diff --git a/src/Symfony/Bundle/Resources/config/doctrine_orm_mercure_publisher.php b/src/Symfony/Bundle/Resources/config/doctrine_orm_mercure_publisher.php index 6fd6ec40f3..79cb7ec1cd 100644 --- a/src/Symfony/Bundle/Resources/config/doctrine_orm_mercure_publisher.php +++ b/src/Symfony/Bundle/Resources/config/doctrine_orm_mercure_publisher.php @@ -13,10 +13,12 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; +use ApiPlatform\Symfony\Doctrine\EventListener\PublishMercureUpdatesListener; + return static function (ContainerConfigurator $container) { $services = $container->services(); - $services->set('api_platform.doctrine.orm.listener.mercure.publish', 'ApiPlatform\Symfony\Doctrine\EventListener\PublishMercureUpdatesListener') + $services->set('api_platform.doctrine.orm.listener.mercure.publish', PublishMercureUpdatesListener::class) ->args([ service('api_platform.resource_class_resolver'), service('api_platform.iri_converter'), diff --git a/src/Symfony/Bundle/Resources/config/elasticsearch.php b/src/Symfony/Bundle/Resources/config/elasticsearch.php index 7a5d04c759..212fa22343 100644 --- a/src/Symfony/Bundle/Resources/config/elasticsearch.php +++ b/src/Symfony/Bundle/Resources/config/elasticsearch.php @@ -13,17 +13,30 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; +use ApiPlatform\Elasticsearch\Extension\ConstantScoreFilterExtension; +use ApiPlatform\Elasticsearch\Extension\SortExtension; +use ApiPlatform\Elasticsearch\Extension\SortFilterExtension; +use ApiPlatform\Elasticsearch\Filter\MatchFilter; +use ApiPlatform\Elasticsearch\Filter\OrderFilter; +use ApiPlatform\Elasticsearch\Filter\TermFilter; +use ApiPlatform\Elasticsearch\Metadata\Resource\Factory\ElasticsearchProviderResourceMetadataCollectionFactory; +use ApiPlatform\Elasticsearch\Serializer\DocumentNormalizer; +use ApiPlatform\Elasticsearch\Serializer\ItemNormalizer; +use ApiPlatform\Elasticsearch\Serializer\NameConverter\InnerFieldsNameConverter; +use ApiPlatform\Elasticsearch\State\CollectionProvider; +use ApiPlatform\Elasticsearch\State\ItemProvider; + return function (ContainerConfigurator $container) { $services = $container->services(); - $services->set('api_platform.elasticsearch.name_converter.inner_fields', 'ApiPlatform\Elasticsearch\Serializer\NameConverter\InnerFieldsNameConverter') + $services->set('api_platform.elasticsearch.name_converter.inner_fields', InnerFieldsNameConverter::class) ->args([service('api_platform.name_converter')->ignoreOnInvalid()]); - $services->set('api_platform.elasticsearch.normalizer.item', 'ApiPlatform\Elasticsearch\Serializer\ItemNormalizer') + $services->set('api_platform.elasticsearch.normalizer.item', ItemNormalizer::class) ->decorate('api_platform.serializer.normalizer.item', null, 0) ->args([service('api_platform.elasticsearch.normalizer.item.inner')]); - $services->set('api_platform.elasticsearch.normalizer.document', 'ApiPlatform\Elasticsearch\Serializer\DocumentNormalizer') + $services->set('api_platform.elasticsearch.normalizer.document', DocumentNormalizer::class) ->args([ service('api_platform.metadata.resource.metadata_collection_factory'), service('serializer.mapping.class_metadata_factory'), @@ -40,15 +53,15 @@ ->abstract() ->args([service('api_platform.filter_locator')]); - $services->set('api_platform.elasticsearch.request_body_search_extension.constant_score_filter', 'ApiPlatform\Elasticsearch\Extension\ConstantScoreFilterExtension') + $services->set('api_platform.elasticsearch.request_body_search_extension.constant_score_filter', ConstantScoreFilterExtension::class) ->parent('api_platform.elasticsearch.request_body_search_extension.filter') ->tag('api_platform.elasticsearch.request_body_search_extension.collection', ['priority' => 30]); - $services->set('api_platform.elasticsearch.request_body_search_extension.sort_filter', 'ApiPlatform\Elasticsearch\Extension\SortFilterExtension') + $services->set('api_platform.elasticsearch.request_body_search_extension.sort_filter', SortFilterExtension::class) ->parent('api_platform.elasticsearch.request_body_search_extension.filter') ->tag('api_platform.elasticsearch.request_body_search_extension.collection', ['priority' => 20]); - $services->set('api_platform.elasticsearch.request_body_search_extension.sort', 'ApiPlatform\Elasticsearch\Extension\SortExtension') + $services->set('api_platform.elasticsearch.request_body_search_extension.sort', SortExtension::class) ->args([ service('api_platform.metadata.property.metadata_factory'), service('api_platform.resource_class_resolver'), @@ -68,19 +81,19 @@ service('api_platform.elasticsearch.name_converter.inner_fields'), ]); - $services->set('api_platform.elasticsearch.term_filter', 'ApiPlatform\Elasticsearch\Filter\TermFilter') + $services->set('api_platform.elasticsearch.term_filter', TermFilter::class) ->abstract() ->parent('api_platform.elasticsearch.search_filter'); - $services->alias('ApiPlatform\Elasticsearch\Filter\TermFilter', 'api_platform.elasticsearch.term_filter'); + $services->alias(TermFilter::class, 'api_platform.elasticsearch.term_filter'); - $services->set('api_platform.elasticsearch.match_filter', 'ApiPlatform\Elasticsearch\Filter\MatchFilter') + $services->set('api_platform.elasticsearch.match_filter', MatchFilter::class) ->abstract() ->parent('api_platform.elasticsearch.search_filter'); - $services->alias('ApiPlatform\Elasticsearch\Filter\MatchFilter', 'api_platform.elasticsearch.match_filter'); + $services->alias(MatchFilter::class, 'api_platform.elasticsearch.match_filter'); - $services->set('api_platform.elasticsearch.order_filter', 'ApiPlatform\Elasticsearch\Filter\OrderFilter') + $services->set('api_platform.elasticsearch.order_filter', OrderFilter::class) ->abstract() ->args([ service('api_platform.metadata.property.name_collection_factory'), @@ -90,9 +103,9 @@ '%api_platform.collection.order_parameter_name%', ]); - $services->alias('ApiPlatform\Elasticsearch\Filter\OrderFilter', 'api_platform.elasticsearch.order_filter'); + $services->alias(OrderFilter::class, 'api_platform.elasticsearch.order_filter'); - $services->set('api_platform.elasticsearch.state.item_provider', 'ApiPlatform\Elasticsearch\State\ItemProvider') + $services->set('api_platform.elasticsearch.state.item_provider', ItemProvider::class) ->args([ service('api_platform.elasticsearch.client'), service('serializer'), @@ -101,9 +114,9 @@ ->tag('api_platform.state_provider', ['priority' => -100, 'key' => 'ApiPlatform\Elasticsearch\State\ItemProvider']) ->tag('api_platform.state_provider', ['priority' => -100]); - $services->alias('ApiPlatform\Elasticsearch\State\ItemProvider', 'api_platform.elasticsearch.state.item_provider'); + $services->alias(ItemProvider::class, 'api_platform.elasticsearch.state.item_provider'); - $services->set('api_platform.elasticsearch.state.collection_provider', 'ApiPlatform\Elasticsearch\State\CollectionProvider') + $services->set('api_platform.elasticsearch.state.collection_provider', CollectionProvider::class) ->args([ service('api_platform.elasticsearch.client'), service('serializer'), @@ -114,9 +127,9 @@ ->tag('api_platform.state_provider', ['priority' => -100, 'key' => 'ApiPlatform\Elasticsearch\State\CollectionProvider']) ->tag('api_platform.state_provider', ['priority' => -100]); - $services->alias('ApiPlatform\Elasticsearch\State\CollectionProvider', 'api_platform.elasticsearch.state.collection_provider'); + $services->alias(CollectionProvider::class, 'api_platform.elasticsearch.state.collection_provider'); - $services->set('api_platform.elasticsearch.metadata.resource.metadata_collection_factory', 'ApiPlatform\Elasticsearch\Metadata\Resource\Factory\ElasticsearchProviderResourceMetadataCollectionFactory') + $services->set('api_platform.elasticsearch.metadata.resource.metadata_collection_factory', ElasticsearchProviderResourceMetadataCollectionFactory::class) ->decorate('api_platform.metadata.resource.metadata_collection_factory', null, 40) ->args([service('api_platform.elasticsearch.metadata.resource.metadata_collection_factory.inner')]); }; diff --git a/src/Symfony/Bundle/Resources/config/filter.php b/src/Symfony/Bundle/Resources/config/filter.php index 277756686f..6d961581bf 100644 --- a/src/Symfony/Bundle/Resources/config/filter.php +++ b/src/Symfony/Bundle/Resources/config/filter.php @@ -13,9 +13,11 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; +use Symfony\Component\DependencyInjection\ServiceLocator; + return static function (ContainerConfigurator $container) { $services = $container->services(); - $services->set('api_platform.filter_locator', 'Symfony\Component\DependencyInjection\ServiceLocator') + $services->set('api_platform.filter_locator', ServiceLocator::class) ->tag('container.service_locator'); }; diff --git a/src/Symfony/Bundle/Resources/config/graphql.php b/src/Symfony/Bundle/Resources/config/graphql.php index 45e4915b27..39d221d490 100644 --- a/src/Symfony/Bundle/Resources/config/graphql.php +++ b/src/Symfony/Bundle/Resources/config/graphql.php @@ -13,38 +13,73 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; +use ApiPlatform\GraphQl\Action\EntrypointAction; +use ApiPlatform\GraphQl\Action\GraphiQlAction; +use ApiPlatform\GraphQl\Error\ErrorHandler; +use ApiPlatform\GraphQl\Executor; +use ApiPlatform\GraphQl\Metadata\RuntimeOperationMetadataFactory; +use ApiPlatform\GraphQl\Resolver\Factory\ResolverFactory; +use ApiPlatform\GraphQl\Resolver\ResourceFieldResolver; +use ApiPlatform\GraphQl\Serializer\Exception\ErrorNormalizer; +use ApiPlatform\GraphQl\Serializer\Exception\HttpExceptionNormalizer; +use ApiPlatform\GraphQl\Serializer\Exception\RuntimeExceptionNormalizer; +use ApiPlatform\GraphQl\Serializer\Exception\ValidationExceptionNormalizer; +use ApiPlatform\GraphQl\Serializer\ItemNormalizer; +use ApiPlatform\GraphQl\Serializer\ObjectNormalizer; +use ApiPlatform\GraphQl\Serializer\SerializerContextBuilder; +use ApiPlatform\GraphQl\Serializer\SerializerContextBuilderInterface; +use ApiPlatform\GraphQl\State\Processor\NormalizeProcessor; +use ApiPlatform\GraphQl\State\Processor\SubscriptionProcessor; +use ApiPlatform\GraphQl\State\Provider\DenormalizeProvider; +use ApiPlatform\GraphQl\State\Provider\ReadProvider; +use ApiPlatform\GraphQl\State\Provider\ResolverProvider; +use ApiPlatform\GraphQl\Subscription\SubscriptionIdentifierGenerator; +use ApiPlatform\GraphQl\Subscription\SubscriptionManager; +use ApiPlatform\GraphQl\Type\Definition\IterableType; +use ApiPlatform\GraphQl\Type\Definition\UploadType; +use ApiPlatform\GraphQl\Type\FieldsBuilder; +use ApiPlatform\GraphQl\Type\SchemaBuilder; +use ApiPlatform\GraphQl\Type\TypeBuilder; +use ApiPlatform\GraphQl\Type\TypeConverter; +use ApiPlatform\GraphQl\Type\TypesContainer; +use ApiPlatform\GraphQl\Type\TypesFactory; +use ApiPlatform\State\Processor\WriteProcessor; +use ApiPlatform\State\Provider\ParameterProvider; +use ApiPlatform\Symfony\Bundle\Command\GraphQlExportCommand; +use Symfony\Component\DependencyInjection\ServiceLocator; + return function (ContainerConfigurator $container) { $services = $container->services(); - $services->set('api_platform.graphql.executor', 'ApiPlatform\GraphQl\Executor') + $services->set('api_platform.graphql.executor', Executor::class) ->args([ '%api_platform.graphql.introspection.enabled%', '%api_platform.graphql.max_query_complexity%', '%api_platform.graphql.max_query_depth%', ]); - $services->set('api_platform.graphql.resolver_locator', 'Symfony\Component\DependencyInjection\ServiceLocator') + $services->set('api_platform.graphql.resolver_locator', ServiceLocator::class) ->tag('container.service_locator'); - $services->set('api_platform.graphql.iterable_type', 'ApiPlatform\GraphQl\Type\Definition\IterableType') + $services->set('api_platform.graphql.iterable_type', IterableType::class) ->tag('api_platform.graphql.type'); - $services->set('api_platform.graphql.upload_type', 'ApiPlatform\GraphQl\Type\Definition\UploadType') + $services->set('api_platform.graphql.upload_type', UploadType::class) ->tag('api_platform.graphql.type'); - $services->set('api_platform.graphql.type_locator', 'Symfony\Component\DependencyInjection\ServiceLocator') + $services->set('api_platform.graphql.type_locator', ServiceLocator::class) ->tag('container.service_locator'); - $services->set('api_platform.graphql.types_container', 'ApiPlatform\GraphQl\Type\TypesContainer'); + $services->set('api_platform.graphql.types_container', TypesContainer::class); - $services->set('api_platform.graphql.types_factory', 'ApiPlatform\GraphQl\Type\TypesFactory') + $services->set('api_platform.graphql.types_factory', TypesFactory::class) ->args([service('api_platform.graphql.type_locator')]); - $services->set('api_platform.graphql.fields_builder_locator', 'Symfony\Component\DependencyInjection\ServiceLocator') + $services->set('api_platform.graphql.fields_builder_locator', ServiceLocator::class) ->args([[service('api_platform.graphql.fields_builder')]]) ->tag('container.service_locator'); - $services->set('api_platform.graphql.action.entrypoint', 'ApiPlatform\GraphQl\Action\EntrypointAction') + $services->set('api_platform.graphql.action.entrypoint', EntrypointAction::class) ->public() ->args([ service('api_platform.graphql.schema_builder'), @@ -57,7 +92,7 @@ '%api_platform.graphql.default_ide%', ]); - $services->set('api_platform.graphql.action.graphiql', 'ApiPlatform\GraphQl\Action\GraphiQlAction') + $services->set('api_platform.graphql.action.graphiql', GraphiQlAction::class) ->public() ->args([ service('twig'), @@ -67,19 +102,19 @@ '%api_platform.asset_package%', ]); - $services->set('api_platform.graphql.error_handler', 'ApiPlatform\GraphQl\Error\ErrorHandler'); + $services->set('api_platform.graphql.error_handler', ErrorHandler::class); - $services->set('api_platform.graphql.subscription.subscription_identifier_generator', 'ApiPlatform\GraphQl\Subscription\SubscriptionIdentifierGenerator'); + $services->set('api_platform.graphql.subscription.subscription_identifier_generator', SubscriptionIdentifierGenerator::class); $services->set('api_platform.graphql.cache.subscription') ->parent('cache.system') ->tag('cache.pool'); - $services->set('api_platform.graphql.command.export_command', 'ApiPlatform\Symfony\Bundle\Command\GraphQlExportCommand') + $services->set('api_platform.graphql.command.export_command', GraphQlExportCommand::class) ->args([service('api_platform.graphql.schema_builder')]) ->tag('console.command'); - $services->set('api_platform.graphql.type_converter', 'ApiPlatform\GraphQl\Type\TypeConverter') + $services->set('api_platform.graphql.type_converter', TypeConverter::class) ->args([ service('api_platform.graphql.type_builder'), service('api_platform.graphql.types_container'), @@ -87,7 +122,7 @@ service('api_platform.metadata.property.metadata_factory'), ]); - $services->set('api_platform.graphql.type_builder', 'ApiPlatform\GraphQl\Type\TypeBuilder') + $services->set('api_platform.graphql.type_builder', TypeBuilder::class) ->args([ service('api_platform.graphql.types_container'), service('api_platform.graphql.resolver.resource_field'), @@ -95,7 +130,7 @@ service('api_platform.pagination'), ]); - $services->set('api_platform.graphql.fields_builder', 'ApiPlatform\GraphQl\Type\FieldsBuilder') + $services->set('api_platform.graphql.fields_builder', FieldsBuilder::class) ->args([ service('api_platform.metadata.property.name_collection_factory'), service('api_platform.metadata.property.metadata_factory'), @@ -112,7 +147,7 @@ service('api_platform.inflector')->nullOnInvalid(), ]); - $services->set('api_platform.graphql.schema_builder', 'ApiPlatform\GraphQl\Type\SchemaBuilder') + $services->set('api_platform.graphql.schema_builder', SchemaBuilder::class) ->args([ service('api_platform.metadata.resource.name_collection_factory'), service('api_platform.metadata.resource.metadata_collection_factory'), @@ -121,16 +156,16 @@ service('api_platform.graphql.fields_builder'), ]); - $services->set('api_platform.graphql.serializer.context_builder', 'ApiPlatform\GraphQl\Serializer\SerializerContextBuilder') + $services->set('api_platform.graphql.serializer.context_builder', SerializerContextBuilder::class) ->args([service('api_platform.name_converter')->ignoreOnInvalid()]); - $services->alias('ApiPlatform\GraphQl\Serializer\SerializerContextBuilderInterface', 'api_platform.graphql.serializer.context_builder'); + $services->alias(SerializerContextBuilderInterface::class, 'api_platform.graphql.serializer.context_builder'); $services->alias('api_platform.graphql.state_provider', 'api_platform.state_provider.locator'); $services->alias('api_platform.graphql.state_processor', 'api_platform.graphql.state_processor.normalize'); - $services->set('api_platform.graphql.state_provider.read', 'ApiPlatform\GraphQl\State\Provider\ReadProvider') + $services->set('api_platform.graphql.state_provider.read', ReadProvider::class) ->decorate('api_platform.graphql.state_provider', null, 500) ->args([ service('api_platform.graphql.state_provider.read.inner'), @@ -139,21 +174,21 @@ '%api_platform.graphql.nesting_separator%', ]); - $services->set('api_platform.graphql.state_provider.parameter', 'ApiPlatform\State\Provider\ParameterProvider') + $services->set('api_platform.graphql.state_provider.parameter', ParameterProvider::class) ->decorate('api_platform.graphql.state_provider', null, 300) ->args([ service('api_platform.graphql.state_provider.parameter.inner'), tagged_locator('api_platform.parameter_provider', 'key'), ]); - $services->set('api_platform.graphql.state_provider.resolver', 'ApiPlatform\GraphQl\State\Provider\ResolverProvider') + $services->set('api_platform.graphql.state_provider.resolver', ResolverProvider::class) ->decorate('api_platform.graphql.state_provider', null, 190) ->args([ service('api_platform.graphql.state_provider.resolver.inner'), service('api_platform.graphql.resolver_locator'), ]); - $services->set('api_platform.graphql.state_provider.denormalizer', 'ApiPlatform\GraphQl\State\Provider\DenormalizeProvider') + $services->set('api_platform.graphql.state_provider.denormalizer', DenormalizeProvider::class) ->decorate('api_platform.graphql.state_provider', null, 300) ->args([ service('api_platform.graphql.state_provider.denormalizer.inner'), @@ -161,7 +196,7 @@ service('api_platform.graphql.serializer.context_builder'), ]); - $services->set('api_platform.graphql.state_processor.subscription', 'ApiPlatform\GraphQl\State\Processor\SubscriptionProcessor') + $services->set('api_platform.graphql.state_processor.subscription', SubscriptionProcessor::class) ->decorate('api_platform.graphql.state_processor', null, 200) ->args([ service('api_platform.graphql.state_processor.subscription.inner'), @@ -169,37 +204,37 @@ service('api_platform.graphql.subscription.mercure_iri_generator')->ignoreOnInvalid(), ]); - $services->set('api_platform.graphql.state_processor.write', 'ApiPlatform\State\Processor\WriteProcessor') + $services->set('api_platform.graphql.state_processor.write', WriteProcessor::class) ->decorate('api_platform.graphql.state_processor', null, 100) ->args([ service('api_platform.graphql.state_processor.write.inner'), service('api_platform.state_processor.locator'), ]); - $services->set('api_platform.graphql.state_processor.normalize', 'ApiPlatform\GraphQl\State\Processor\NormalizeProcessor') + $services->set('api_platform.graphql.state_processor.normalize', NormalizeProcessor::class) ->args([ service('serializer'), service('api_platform.graphql.serializer.context_builder'), service('api_platform.pagination'), ]); - $services->set('api_platform.graphql.resolver.factory', 'ApiPlatform\GraphQl\Resolver\Factory\ResolverFactory') + $services->set('api_platform.graphql.resolver.factory', ResolverFactory::class) ->args([ service('api_platform.graphql.state_provider'), service('api_platform.graphql.state_processor'), service('api_platform.graphql.runtime_operation_metadata_factory'), ]); - $services->set('api_platform.graphql.runtime_operation_metadata_factory', 'ApiPlatform\GraphQl\Metadata\RuntimeOperationMetadataFactory') + $services->set('api_platform.graphql.runtime_operation_metadata_factory', RuntimeOperationMetadataFactory::class) ->args([ service('api_platform.metadata.resource.metadata_collection_factory'), service('api_platform.router'), ]); - $services->set('api_platform.graphql.resolver.resource_field', 'ApiPlatform\GraphQl\Resolver\ResourceFieldResolver') + $services->set('api_platform.graphql.resolver.resource_field', ResourceFieldResolver::class) ->args([service('api_platform.symfony.iri_converter')]); - $services->set('api_platform.graphql.normalizer.item', 'ApiPlatform\GraphQl\Serializer\ItemNormalizer') + $services->set('api_platform.graphql.normalizer.item', ItemNormalizer::class) ->args([ service('api_platform.metadata.property.name_collection_factory'), service('api_platform.metadata.property.metadata_factory'), @@ -215,7 +250,7 @@ ]) ->tag('serializer.normalizer', ['priority' => -890]); - $services->set('api_platform.graphql.normalizer.object', 'ApiPlatform\GraphQl\Serializer\ObjectNormalizer') + $services->set('api_platform.graphql.normalizer.object', ObjectNormalizer::class) ->args([ service('serializer.normalizer.object'), service('api_platform.symfony.iri_converter'), @@ -223,7 +258,7 @@ ]) ->tag('serializer.normalizer', ['priority' => -995]); - $services->set('api_platform.graphql.subscription.subscription_manager', 'ApiPlatform\GraphQl\Subscription\SubscriptionManager') + $services->set('api_platform.graphql.subscription.subscription_manager', SubscriptionManager::class) ->args([ service('api_platform.graphql.cache.subscription'), service('api_platform.graphql.subscription.subscription_identifier_generator'), @@ -232,16 +267,16 @@ service('api_platform.metadata.resource.metadata_collection_factory'), ]); - $services->set('api_platform.graphql.normalizer.error', 'ApiPlatform\GraphQl\Serializer\Exception\ErrorNormalizer') + $services->set('api_platform.graphql.normalizer.error', ErrorNormalizer::class) ->tag('serializer.normalizer', ['priority' => -790]); - $services->set('api_platform.graphql.normalizer.validation_exception', 'ApiPlatform\GraphQl\Serializer\Exception\ValidationExceptionNormalizer') + $services->set('api_platform.graphql.normalizer.validation_exception', ValidationExceptionNormalizer::class) ->args(['%api_platform.exception_to_status%']) ->tag('serializer.normalizer', ['priority' => -780]); - $services->set('api_platform.graphql.normalizer.http_exception', 'ApiPlatform\GraphQl\Serializer\Exception\HttpExceptionNormalizer') + $services->set('api_platform.graphql.normalizer.http_exception', HttpExceptionNormalizer::class) ->tag('serializer.normalizer', ['priority' => -780]); - $services->set('api_platform.graphql.normalizer.runtime_exception', 'ApiPlatform\GraphQl\Serializer\Exception\RuntimeExceptionNormalizer') + $services->set('api_platform.graphql.normalizer.runtime_exception', RuntimeExceptionNormalizer::class) ->tag('serializer.normalizer', ['priority' => -780]); }; diff --git a/src/Symfony/Bundle/Resources/config/graphql/security.php b/src/Symfony/Bundle/Resources/config/graphql/security.php index f40daedc0f..a056bbc4fb 100644 --- a/src/Symfony/Bundle/Resources/config/graphql/security.php +++ b/src/Symfony/Bundle/Resources/config/graphql/security.php @@ -13,17 +13,19 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; +use ApiPlatform\Symfony\Security\State\AccessCheckerProvider; + return static function (ContainerConfigurator $container) { $services = $container->services(); - $services->set('api_platform.graphql.state_provider.access_checker', 'ApiPlatform\Symfony\Security\State\AccessCheckerProvider') + $services->set('api_platform.graphql.state_provider.access_checker', AccessCheckerProvider::class) ->decorate('api_platform.graphql.state_provider.read', null, 0) ->args([ service('api_platform.graphql.state_provider.access_checker.inner'), service('api_platform.security.resource_access_checker'), ]); - $services->set('api_platform.graphql.state_provider.access_checker.post_deserialize', 'ApiPlatform\Symfony\Security\State\AccessCheckerProvider') + $services->set('api_platform.graphql.state_provider.access_checker.post_deserialize', AccessCheckerProvider::class) ->decorate('api_platform.graphql.state_provider.denormalizer', null, 0) ->args([ service('api_platform.graphql.state_provider.access_checker.post_deserialize.inner'), @@ -31,7 +33,7 @@ 'post_denormalize', ]); - $services->set('api_platform.graphql.state_provider.access_checker.post_validate', 'ApiPlatform\Symfony\Security\State\AccessCheckerProvider') + $services->set('api_platform.graphql.state_provider.access_checker.post_validate', AccessCheckerProvider::class) ->decorate('api_platform.graphql.state_provider.validate', null, 0) ->args([ service('api_platform.graphql.state_provider.access_checker.post_validate.inner'), @@ -39,7 +41,7 @@ 'post_validate', ]); - $services->set('api_platform.graphql.state_provider.access_checker.after_resolver', 'ApiPlatform\Symfony\Security\State\AccessCheckerProvider') + $services->set('api_platform.graphql.state_provider.access_checker.after_resolver', AccessCheckerProvider::class) ->decorate('api_platform.graphql.state_provider', null, 170) ->args([ service('api_platform.graphql.state_provider.access_checker.after_resolver.inner'), diff --git a/src/Symfony/Bundle/Resources/config/graphql/validator.php b/src/Symfony/Bundle/Resources/config/graphql/validator.php index ea01a9d42c..5d4a0a6498 100644 --- a/src/Symfony/Bundle/Resources/config/graphql/validator.php +++ b/src/Symfony/Bundle/Resources/config/graphql/validator.php @@ -13,17 +13,19 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; +use ApiPlatform\Symfony\Validator\State\ValidateProvider; + return static function (ContainerConfigurator $container) { $services = $container->services(); - $services->set('api_platform.graphql.state_provider.validate', 'ApiPlatform\Symfony\Validator\State\ValidateProvider') + $services->set('api_platform.graphql.state_provider.validate', ValidateProvider::class) ->decorate('api_platform.graphql.state_provider', null, 200) ->args([ service('api_platform.graphql.state_provider.validate.inner'), service('api_platform.validator'), ]); - $services->set('api_platform.graphql.state_provider.validate_after_resolver', 'ApiPlatform\Symfony\Validator\State\ValidateProvider') + $services->set('api_platform.graphql.state_provider.validate_after_resolver', ValidateProvider::class) ->decorate('api_platform.graphql.state_provider', null, 180) ->args([ service('api_platform.graphql.state_provider.validate_after_resolver.inner'), diff --git a/src/Symfony/Bundle/Resources/config/graphql_mercure.php b/src/Symfony/Bundle/Resources/config/graphql_mercure.php index 68d6ae1f03..cd87445ee3 100644 --- a/src/Symfony/Bundle/Resources/config/graphql_mercure.php +++ b/src/Symfony/Bundle/Resources/config/graphql_mercure.php @@ -13,10 +13,12 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; +use ApiPlatform\GraphQl\Subscription\MercureSubscriptionIriGenerator; + return static function (ContainerConfigurator $container) { $services = $container->services(); - $services->set('api_platform.graphql.subscription.mercure_iri_generator', 'ApiPlatform\GraphQl\Subscription\MercureSubscriptionIriGenerator') + $services->set('api_platform.graphql.subscription.mercure_iri_generator', MercureSubscriptionIriGenerator::class) ->args([ service('router.request_context'), service('Symfony\Component\Mercure\HubRegistry'), diff --git a/src/Symfony/Bundle/Resources/config/hal.php b/src/Symfony/Bundle/Resources/config/hal.php index e284e70a2e..14940623cf 100644 --- a/src/Symfony/Bundle/Resources/config/hal.php +++ b/src/Symfony/Bundle/Resources/config/hal.php @@ -13,10 +13,17 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; +use ApiPlatform\Hal\JsonSchema\SchemaFactory; +use ApiPlatform\Hal\Serializer\CollectionNormalizer; +use ApiPlatform\Hal\Serializer\EntrypointNormalizer; +use ApiPlatform\Hal\Serializer\ItemNormalizer; +use ApiPlatform\Hal\Serializer\ObjectNormalizer; +use ApiPlatform\Serializer\JsonEncoder; + return static function (ContainerConfigurator $container) { $services = $container->services(); - $services->set('api_platform.hal.json_schema.schema_factory', 'ApiPlatform\Hal\JsonSchema\SchemaFactory') + $services->set('api_platform.hal.json_schema.schema_factory', SchemaFactory::class) ->decorate('api_platform.json_schema.schema_factory', null, 0) ->args([ service('api_platform.hal.json_schema.schema_factory.inner'), @@ -24,11 +31,11 @@ service('api_platform.metadata.resource.metadata_collection_factory')->ignoreOnInvalid(), ]); - $services->set('api_platform.hal.encoder', 'ApiPlatform\Serializer\JsonEncoder') + $services->set('api_platform.hal.encoder', JsonEncoder::class) ->args(['jsonhal']) ->tag('serializer.encoder'); - $services->set('api_platform.hal.normalizer.entrypoint', 'ApiPlatform\Hal\Serializer\EntrypointNormalizer') + $services->set('api_platform.hal.normalizer.entrypoint', EntrypointNormalizer::class) ->args([ service('api_platform.metadata.resource.metadata_collection_factory'), service('api_platform.iri_converter'), @@ -36,7 +43,7 @@ ]) ->tag('serializer.normalizer', ['priority' => -800]); - $services->set('api_platform.hal.normalizer.collection', 'ApiPlatform\Hal\Serializer\CollectionNormalizer') + $services->set('api_platform.hal.normalizer.collection', CollectionNormalizer::class) ->args([ service('api_platform.resource_class_resolver'), '%api_platform.collection.pagination.page_parameter_name%', @@ -44,7 +51,7 @@ ]) ->tag('serializer.normalizer', ['priority' => -985]); - $services->set('api_platform.hal.normalizer.item', 'ApiPlatform\Hal\Serializer\ItemNormalizer') + $services->set('api_platform.hal.normalizer.item', ItemNormalizer::class) ->args([ service('api_platform.metadata.property.name_collection_factory'), service('api_platform.metadata.property.metadata_factory'), @@ -60,7 +67,7 @@ ]) ->tag('serializer.normalizer', ['priority' => -890]); - $services->set('api_platform.hal.normalizer.object', 'ApiPlatform\Hal\Serializer\ObjectNormalizer') + $services->set('api_platform.hal.normalizer.object', ObjectNormalizer::class) ->args([ service('serializer.normalizer.object'), service('api_platform.iri_converter'), diff --git a/src/Symfony/Bundle/Resources/config/http_cache.php b/src/Symfony/Bundle/Resources/config/http_cache.php index 194995249e..98db9a5df7 100644 --- a/src/Symfony/Bundle/Resources/config/http_cache.php +++ b/src/Symfony/Bundle/Resources/config/http_cache.php @@ -13,10 +13,12 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; +use ApiPlatform\HttpCache\State\AddHeadersProcessor; + return static function (ContainerConfigurator $container) { $services = $container->services(); - $services->set('api_platform.http_cache.processor.add_headers', 'ApiPlatform\HttpCache\State\AddHeadersProcessor') + $services->set('api_platform.http_cache.processor.add_headers', AddHeadersProcessor::class) ->decorate('api_platform.state_processor.respond', null, 0) ->args([ service('api_platform.http_cache.processor.add_headers.inner'), diff --git a/src/Symfony/Bundle/Resources/config/http_cache_purger.php b/src/Symfony/Bundle/Resources/config/http_cache_purger.php index 205eb8d057..1637f91ea4 100644 --- a/src/Symfony/Bundle/Resources/config/http_cache_purger.php +++ b/src/Symfony/Bundle/Resources/config/http_cache_purger.php @@ -13,22 +13,26 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; +use ApiPlatform\HttpCache\SouinPurger; +use ApiPlatform\HttpCache\VarnishPurger; +use ApiPlatform\HttpCache\VarnishXKeyPurger; + return static function (ContainerConfigurator $container) { $services = $container->services(); $services->alias('api_platform.http_cache.purger.varnish', 'api_platform.http_cache.purger.varnish.ban'); - $services->set('api_platform.http_cache.purger.varnish.ban', 'ApiPlatform\HttpCache\VarnishPurger') + $services->set('api_platform.http_cache.purger.varnish.ban', VarnishPurger::class) ->args([tagged_iterator('api_platform.http_cache.http_client')]); - $services->set('api_platform.http_cache.purger.varnish.xkey', 'ApiPlatform\HttpCache\VarnishXKeyPurger') + $services->set('api_platform.http_cache.purger.varnish.xkey', VarnishXKeyPurger::class) ->args([ tagged_iterator('api_platform.http_cache.http_client'), '%api_platform.http_cache.invalidation.max_header_length%', '%api_platform.http_cache.invalidation.xkey.glue%', ]); - $services->set('api_platform.http_cache.purger.souin', 'ApiPlatform\HttpCache\SouinPurger') + $services->set('api_platform.http_cache.purger.souin', SouinPurger::class) ->args([ tagged_iterator('api_platform.http_cache.http_client'), '%api_platform.http_cache.invalidation.max_header_length%', diff --git a/src/Symfony/Bundle/Resources/config/hydra.php b/src/Symfony/Bundle/Resources/config/hydra.php index 03be3e4f7c..f015e531d7 100644 --- a/src/Symfony/Bundle/Resources/config/hydra.php +++ b/src/Symfony/Bundle/Resources/config/hydra.php @@ -13,10 +13,19 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; +use ApiPlatform\Hydra\JsonSchema\SchemaFactory; +use ApiPlatform\Hydra\Serializer\CollectionFiltersNormalizer; +use ApiPlatform\Hydra\Serializer\CollectionNormalizer; +use ApiPlatform\Hydra\Serializer\ConstraintViolationListNormalizer; +use ApiPlatform\Hydra\Serializer\DocumentationNormalizer; +use ApiPlatform\Hydra\Serializer\EntrypointNormalizer; +use ApiPlatform\Hydra\Serializer\HydraPrefixNameConverter; +use ApiPlatform\Hydra\Serializer\PartialCollectionViewNormalizer; + return static function (ContainerConfigurator $container) { $services = $container->services(); - $services->set('api_platform.hydra.json_schema.schema_factory', 'ApiPlatform\Hydra\JsonSchema\SchemaFactory') + $services->set('api_platform.hydra.json_schema.schema_factory', SchemaFactory::class) ->decorate('api_platform.json_schema.schema_factory', null, 0) ->args([ service('api_platform.hydra.json_schema.schema_factory.inner'), @@ -25,7 +34,7 @@ service('api_platform.metadata.resource.metadata_collection_factory')->ignoreOnInvalid(), ]); - $services->set('api_platform.hydra.normalizer.documentation', 'ApiPlatform\Hydra\Serializer\DocumentationNormalizer') + $services->set('api_platform.hydra.normalizer.documentation', DocumentationNormalizer::class) ->args([ service('api_platform.metadata.resource.metadata_collection_factory'), service('api_platform.metadata.property.name_collection_factory'), @@ -38,7 +47,7 @@ ]) ->tag('serializer.normalizer', ['priority' => -800]); - $services->set('api_platform.hydra.normalizer.constraint_violation_list', 'ApiPlatform\Hydra\Serializer\ConstraintViolationListNormalizer') + $services->set('api_platform.hydra.normalizer.constraint_violation_list', ConstraintViolationListNormalizer::class) ->args([ '%api_platform.validator.serialize_payload_fields%', service('api_platform.name_converter')->ignoreOnInvalid(), @@ -46,7 +55,7 @@ ]) ->tag('serializer.normalizer', ['priority' => -780]); - $services->set('api_platform.hydra.normalizer.entrypoint', 'ApiPlatform\Hydra\Serializer\EntrypointNormalizer') + $services->set('api_platform.hydra.normalizer.entrypoint', EntrypointNormalizer::class) ->args([ service('api_platform.metadata.resource.metadata_collection_factory'), service('api_platform.iri_converter'), @@ -54,7 +63,7 @@ ]) ->tag('serializer.normalizer', ['priority' => -800]); - $services->set('api_platform.hydra.normalizer.collection', 'ApiPlatform\Hydra\Serializer\CollectionNormalizer') + $services->set('api_platform.hydra.normalizer.collection', CollectionNormalizer::class) ->args([ service('api_platform.jsonld.context_builder'), service('api_platform.resource_class_resolver'), @@ -63,7 +72,7 @@ ]) ->tag('serializer.normalizer', ['priority' => -985]); - $services->set('api_platform.hydra.normalizer.partial_collection_view', 'ApiPlatform\Hydra\Serializer\PartialCollectionViewNormalizer') + $services->set('api_platform.hydra.normalizer.partial_collection_view', PartialCollectionViewNormalizer::class) ->decorate('api_platform.hydra.normalizer.collection', null, 0) ->args([ service('api_platform.hydra.normalizer.partial_collection_view.inner'), @@ -75,7 +84,7 @@ '%api_platform.serializer.default_context%', ]); - $services->set('api_platform.hydra.normalizer.collection_filters', 'ApiPlatform\Hydra\Serializer\CollectionFiltersNormalizer') + $services->set('api_platform.hydra.normalizer.collection_filters', CollectionFiltersNormalizer::class) ->decorate('api_platform.hydra.normalizer.collection', null, 0) ->args([ service('api_platform.hydra.normalizer.collection_filters.inner'), @@ -85,7 +94,7 @@ '%api_platform.serializer.default_context%', ]); - $services->set('api_platform.hydra.name_converter.hydra_prefix', 'ApiPlatform\Hydra\Serializer\HydraPrefixNameConverter') + $services->set('api_platform.hydra.name_converter.hydra_prefix', HydraPrefixNameConverter::class) ->decorate('api_platform.name_converter', null, 0) ->args([ service('api_platform.hydra.name_converter.hydra_prefix.inner'), diff --git a/src/Symfony/Bundle/Resources/config/json_schema.php b/src/Symfony/Bundle/Resources/config/json_schema.php index ab28efb827..ab64a31e40 100644 --- a/src/Symfony/Bundle/Resources/config/json_schema.php +++ b/src/Symfony/Bundle/Resources/config/json_schema.php @@ -13,10 +13,17 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; +use ApiPlatform\JsonSchema\BackwardCompatibleSchemaFactory; +use ApiPlatform\JsonSchema\Command\JsonSchemaGenerateCommand; +use ApiPlatform\JsonSchema\DefinitionNameFactory; +use ApiPlatform\JsonSchema\Metadata\Property\Factory\SchemaPropertyMetadataFactory; +use ApiPlatform\JsonSchema\SchemaFactory; +use ApiPlatform\JsonSchema\SchemaFactoryInterface; + return static function (ContainerConfigurator $container) { $services = $container->services(); - $services->set('api_platform.json_schema.schema_factory', 'ApiPlatform\JsonSchema\SchemaFactory') + $services->set('api_platform.json_schema.schema_factory', SchemaFactory::class) ->args([ service('api_platform.metadata.resource.metadata_collection_factory'), service('api_platform.metadata.property.name_collection_factory'), @@ -27,25 +34,25 @@ service('api_platform.json_schema.definition_name_factory')->ignoreOnInvalid(), ]); - $services->alias('ApiPlatform\JsonSchema\SchemaFactoryInterface', 'api_platform.json_schema.schema_factory'); + $services->alias(SchemaFactoryInterface::class, 'api_platform.json_schema.schema_factory'); - $services->set('api_platform.json_schema.json_schema_generate_command', 'ApiPlatform\JsonSchema\Command\JsonSchemaGenerateCommand') + $services->set('api_platform.json_schema.json_schema_generate_command', JsonSchemaGenerateCommand::class) ->args([ service('api_platform.json_schema.schema_factory'), '%api_platform.formats%', ]) ->tag('console.command'); - $services->set('api_platform.json_schema.metadata.property.metadata_factory.schema', 'ApiPlatform\JsonSchema\Metadata\Property\Factory\SchemaPropertyMetadataFactory') + $services->set('api_platform.json_schema.metadata.property.metadata_factory.schema', SchemaPropertyMetadataFactory::class) ->decorate('api_platform.metadata.property.metadata_factory', null, 10) ->args([ service('api_platform.resource_class_resolver'), service('api_platform.json_schema.metadata.property.metadata_factory.schema.inner'), ]); - $services->set('api_platform.json_schema.backward_compatible_schema_factory', 'ApiPlatform\JsonSchema\BackwardCompatibleSchemaFactory') + $services->set('api_platform.json_schema.backward_compatible_schema_factory', BackwardCompatibleSchemaFactory::class) ->decorate('api_platform.json_schema.schema_factory', null, -2) ->args([service('api_platform.json_schema.backward_compatible_schema_factory.inner')]); - $services->set('api_platform.json_schema.definition_name_factory', 'ApiPlatform\JsonSchema\DefinitionNameFactory'); + $services->set('api_platform.json_schema.definition_name_factory', DefinitionNameFactory::class); }; diff --git a/src/Symfony/Bundle/Resources/config/json_streamer/common.php b/src/Symfony/Bundle/Resources/config/json_streamer/common.php index 0d7d1e30d3..756c16898f 100644 --- a/src/Symfony/Bundle/Resources/config/json_streamer/common.php +++ b/src/Symfony/Bundle/Resources/config/json_streamer/common.php @@ -13,13 +13,19 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; +use ApiPlatform\JsonLd\JsonStreamer\ValueTransformer\ContextValueTransformer; +use ApiPlatform\JsonLd\JsonStreamer\ValueTransformer\IriValueTransformer; +use ApiPlatform\JsonLd\JsonStreamer\ValueTransformer\TypeValueTransformer; +use ApiPlatform\JsonLd\JsonStreamer\WritePropertyMetadataLoader; use Symfony\Component\JsonStreamer\CacheWarmer\LazyGhostCacheWarmer; +use Symfony\Component\JsonStreamer\JsonStreamReader; +use Symfony\Component\JsonStreamer\JsonStreamWriter; use Symfony\Component\JsonStreamer\StreamerDumper; return static function (ContainerConfigurator $container) { $services = $container->services(); - $services->set('api_platform.jsonld.json_streamer.stream_writer', 'Symfony\Component\JsonStreamer\JsonStreamWriter') + $services->set('api_platform.jsonld.json_streamer.stream_writer', JsonStreamWriter::class) ->args([ tagged_locator('json_streamer.value_transformer'), service('api_platform.jsonld.json_streamer.write.property_metadata_loader'), @@ -44,10 +50,10 @@ $jsonStreamReaderArgs[] = param('.json_streamer.lazy_ghosts_dir'); } - $services->set('api_platform.jsonld.json_streamer.stream_reader', 'Symfony\Component\JsonStreamer\JsonStreamReader') + $services->set('api_platform.jsonld.json_streamer.stream_reader', JsonStreamReader::class) ->args($jsonStreamReaderArgs); - $services->set('api_platform.jsonld.json_streamer.write.property_metadata_loader', 'ApiPlatform\JsonLd\JsonStreamer\WritePropertyMetadataLoader') + $services->set('api_platform.jsonld.json_streamer.write.property_metadata_loader', WritePropertyMetadataLoader::class) ->args([ service('json_streamer.write.property_metadata_loader'), service('api_platform.resource_class_resolver'), @@ -55,18 +61,18 @@ service('api_platform.metadata.property.metadata_factory'), ]); - $services->set('api_platform.jsonld.json_streamer.write.value_transformer.iri', 'ApiPlatform\JsonLd\JsonStreamer\ValueTransformer\IriValueTransformer') + $services->set('api_platform.jsonld.json_streamer.write.value_transformer.iri', IriValueTransformer::class) ->args([service('api_platform.iri_converter')]) ->tag('json_streamer.value_transformer'); - $services->set('api_platform.jsonld.json_streamer.write.value_transformer.type', 'ApiPlatform\JsonLd\JsonStreamer\ValueTransformer\TypeValueTransformer') + $services->set('api_platform.jsonld.json_streamer.write.value_transformer.type', TypeValueTransformer::class) ->args([ service('api_platform.resource_class_resolver'), service('api_platform.metadata.resource.metadata_collection_factory'), ]) ->tag('json_streamer.value_transformer'); - $services->set('api_platform.jsonld.json_streamer.write.value_transformer.context', 'ApiPlatform\JsonLd\JsonStreamer\ValueTransformer\ContextValueTransformer') + $services->set('api_platform.jsonld.json_streamer.write.value_transformer.context', ContextValueTransformer::class) ->args([service('api_platform.router')]) ->tag('json_streamer.value_transformer'); }; diff --git a/src/Symfony/Bundle/Resources/config/json_streamer/events.php b/src/Symfony/Bundle/Resources/config/json_streamer/events.php index cc2b021a2c..e5743b69f0 100644 --- a/src/Symfony/Bundle/Resources/config/json_streamer/events.php +++ b/src/Symfony/Bundle/Resources/config/json_streamer/events.php @@ -13,10 +13,17 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; +use ApiPlatform\Hydra\State\JsonStreamerProcessor as StateJsonStreamerProcessor; +use ApiPlatform\Hydra\State\JsonStreamerProvider as StateJsonStreamerProvider; +use ApiPlatform\Serializer\State\JsonStreamerProcessor; +use ApiPlatform\Serializer\State\JsonStreamerProvider; +use ApiPlatform\Symfony\EventListener\JsonStreamerDeserializeListener; +use ApiPlatform\Symfony\EventListener\JsonStreamerSerializeListener; + return static function (ContainerConfigurator $container) { $services = $container->services(); - $services->set('api_platform.jsonld.state_processor.json_streamer', 'ApiPlatform\Hydra\State\JsonStreamerProcessor') + $services->set('api_platform.jsonld.state_processor.json_streamer', StateJsonStreamerProcessor::class) ->args([ null, service('api_platform.jsonld.json_streamer.stream_writer'), @@ -28,13 +35,13 @@ '%api_platform.url_generation_strategy%', ]); - $services->set('api_platform.jsonld.state_provider.json_streamer', 'ApiPlatform\Hydra\State\JsonStreamerProvider') + $services->set('api_platform.jsonld.state_provider.json_streamer', StateJsonStreamerProvider::class) ->args([ null, service('api_platform.jsonld.json_streamer.stream_reader'), ]); - $services->set('api_platform.state_processor.json_streamer', 'ApiPlatform\Serializer\State\JsonStreamerProcessor') + $services->set('api_platform.state_processor.json_streamer', JsonStreamerProcessor::class) ->args([ null, service('json_streamer.stream_writer'), @@ -43,13 +50,13 @@ service('api_platform.metadata.operation.metadata_factory'), ]); - $services->set('api_platform.state_provider.json_streamer', 'ApiPlatform\Serializer\State\JsonStreamerProvider') + $services->set('api_platform.state_provider.json_streamer', JsonStreamerProvider::class) ->args([ null, service('json_streamer.stream_reader'), ]); - $services->set('api_platform.listener.request.json_streamer_deserialize', 'ApiPlatform\Symfony\EventListener\JsonStreamerDeserializeListener') + $services->set('api_platform.listener.request.json_streamer_deserialize', JsonStreamerDeserializeListener::class) ->args([ service('api_platform.state_provider.json_streamer'), 'json', @@ -57,7 +64,7 @@ ]) ->tag('kernel.event_listener', ['event' => 'kernel.request', 'method' => 'onKernelRequest', 'priority' => 3]); - $services->set('api_platform.listener.request.jsonld_streamer_deserialize', 'ApiPlatform\Symfony\EventListener\JsonStreamerDeserializeListener') + $services->set('api_platform.listener.request.jsonld_streamer_deserialize', JsonStreamerDeserializeListener::class) ->args([ service('api_platform.jsonld.state_provider.json_streamer'), 'jsonld', @@ -65,7 +72,7 @@ ]) ->tag('kernel.event_listener', ['event' => 'kernel.request', 'method' => 'onKernelRequest', 'priority' => 3]); - $services->set('api_platform.listener.view.json_streamer_serialize', 'ApiPlatform\Symfony\EventListener\JsonStreamerSerializeListener') + $services->set('api_platform.listener.view.json_streamer_serialize', JsonStreamerSerializeListener::class) ->args([ service('api_platform.state_processor.json_streamer'), 'json', @@ -73,7 +80,7 @@ ]) ->tag('kernel.event_listener', ['event' => 'kernel.view', 'method' => 'onKernelView', 'priority' => 17]); - $services->set('api_platform.listener.view.jsonld_streamer_serialize', 'ApiPlatform\Symfony\EventListener\JsonStreamerSerializeListener') + $services->set('api_platform.listener.view.jsonld_streamer_serialize', JsonStreamerSerializeListener::class) ->args([ service('api_platform.jsonld.state_processor.json_streamer'), 'jsonld', diff --git a/src/Symfony/Bundle/Resources/config/json_streamer/hydra.php b/src/Symfony/Bundle/Resources/config/json_streamer/hydra.php index 75454f1d53..eeedd116af 100644 --- a/src/Symfony/Bundle/Resources/config/json_streamer/hydra.php +++ b/src/Symfony/Bundle/Resources/config/json_streamer/hydra.php @@ -13,10 +13,13 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; +use ApiPlatform\Hydra\State\JsonStreamerProcessor; +use ApiPlatform\Hydra\State\JsonStreamerProvider; + return static function (ContainerConfigurator $container) { $services = $container->services(); - $services->set('api_platform.jsonld.state_processor.json_streamer', 'ApiPlatform\Hydra\State\JsonStreamerProcessor') + $services->set('api_platform.jsonld.state_processor.json_streamer', JsonStreamerProcessor::class) ->decorate('api_platform.state_processor.main', null, 190) ->args([ service('api_platform.jsonld.state_processor.json_streamer.inner'), @@ -29,7 +32,7 @@ '%api_platform.url_generation_strategy%', ]); - $services->set('api_platform.jsonld.state_provider.json_streamer', 'ApiPlatform\Hydra\State\JsonStreamerProvider') + $services->set('api_platform.jsonld.state_provider.json_streamer', JsonStreamerProvider::class) ->decorate('api_platform.state_provider.main', null, 310) ->args([ service('api_platform.jsonld.state_provider.json_streamer.inner'), diff --git a/src/Symfony/Bundle/Resources/config/json_streamer/json.php b/src/Symfony/Bundle/Resources/config/json_streamer/json.php index e198a32d14..fbf32eb3e4 100644 --- a/src/Symfony/Bundle/Resources/config/json_streamer/json.php +++ b/src/Symfony/Bundle/Resources/config/json_streamer/json.php @@ -13,10 +13,13 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; +use ApiPlatform\Serializer\State\JsonStreamerProcessor; +use ApiPlatform\Serializer\State\JsonStreamerProvider; + return static function (ContainerConfigurator $container) { $services = $container->services(); - $services->set('api_platform.state_processor.json_streamer', 'ApiPlatform\Serializer\State\JsonStreamerProcessor') + $services->set('api_platform.state_processor.json_streamer', JsonStreamerProcessor::class) ->decorate('api_platform.state_processor.main', null, 190) ->args([ service('api_platform.state_processor.json_streamer.inner'), @@ -26,7 +29,7 @@ service('api_platform.metadata.operation.metadata_factory'), ]); - $services->set('api_platform.state_provider.json_streamer', 'ApiPlatform\Serializer\State\JsonStreamerProvider') + $services->set('api_platform.state_provider.json_streamer', JsonStreamerProvider::class) ->decorate('api_platform.state_provider.main', null, 310) ->args([ service('api_platform.state_provider.json_streamer.inner'), diff --git a/src/Symfony/Bundle/Resources/config/jsonapi.php b/src/Symfony/Bundle/Resources/config/jsonapi.php index 4e760e4963..e6a5522cb8 100644 --- a/src/Symfony/Bundle/Resources/config/jsonapi.php +++ b/src/Symfony/Bundle/Resources/config/jsonapi.php @@ -13,10 +13,20 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; +use ApiPlatform\JsonApi\JsonSchema\SchemaFactory; +use ApiPlatform\JsonApi\Serializer\CollectionNormalizer; +use ApiPlatform\JsonApi\Serializer\ConstraintViolationListNormalizer; +use ApiPlatform\JsonApi\Serializer\EntrypointNormalizer; +use ApiPlatform\JsonApi\Serializer\ErrorNormalizer; +use ApiPlatform\JsonApi\Serializer\ItemNormalizer; +use ApiPlatform\JsonApi\Serializer\ObjectNormalizer; +use ApiPlatform\JsonApi\Serializer\ReservedAttributeNameConverter; +use ApiPlatform\Serializer\JsonEncoder; + return static function (ContainerConfigurator $container) { $services = $container->services(); - $services->set('api_platform.jsonapi.json_schema.schema_factory', 'ApiPlatform\JsonApi\JsonSchema\SchemaFactory') + $services->set('api_platform.jsonapi.json_schema.schema_factory', SchemaFactory::class) ->decorate('api_platform.json_schema.schema_factory', null, 0) ->args([ service('api_platform.jsonapi.json_schema.schema_factory.inner'), @@ -26,14 +36,14 @@ service('api_platform.json_schema.definition_name_factory')->ignoreOnInvalid(), ]); - $services->set('api_platform.jsonapi.encoder', 'ApiPlatform\Serializer\JsonEncoder') + $services->set('api_platform.jsonapi.encoder', JsonEncoder::class) ->args(['jsonapi']) ->tag('serializer.encoder'); - $services->set('api_platform.jsonapi.name_converter.reserved_attribute_name', 'ApiPlatform\JsonApi\Serializer\ReservedAttributeNameConverter') + $services->set('api_platform.jsonapi.name_converter.reserved_attribute_name', ReservedAttributeNameConverter::class) ->args([service('api_platform.name_converter')->ignoreOnInvalid()]); - $services->set('api_platform.jsonapi.normalizer.entrypoint', 'ApiPlatform\JsonApi\Serializer\EntrypointNormalizer') + $services->set('api_platform.jsonapi.normalizer.entrypoint', EntrypointNormalizer::class) ->args([ service('api_platform.metadata.resource.metadata_collection_factory'), service('api_platform.iri_converter'), @@ -41,7 +51,7 @@ ]) ->tag('serializer.normalizer', ['priority' => -800]); - $services->set('api_platform.jsonapi.normalizer.collection', 'ApiPlatform\JsonApi\Serializer\CollectionNormalizer') + $services->set('api_platform.jsonapi.normalizer.collection', CollectionNormalizer::class) ->args([ service('api_platform.resource_class_resolver'), '%api_platform.collection.pagination.page_parameter_name%', @@ -49,7 +59,7 @@ ]) ->tag('serializer.normalizer', ['priority' => -985]); - $services->set('api_platform.jsonapi.normalizer.item', 'ApiPlatform\JsonApi\Serializer\ItemNormalizer') + $services->set('api_platform.jsonapi.normalizer.item', ItemNormalizer::class) ->args([ service('api_platform.metadata.property.name_collection_factory'), service('api_platform.metadata.property.metadata_factory'), @@ -65,7 +75,7 @@ ]) ->tag('serializer.normalizer', ['priority' => -890]); - $services->set('api_platform.jsonapi.normalizer.object', 'ApiPlatform\JsonApi\Serializer\ObjectNormalizer') + $services->set('api_platform.jsonapi.normalizer.object', ObjectNormalizer::class) ->args([ service('serializer.normalizer.object'), service('api_platform.iri_converter'), @@ -74,14 +84,14 @@ ]) ->tag('serializer.normalizer', ['priority' => -995]); - $services->set('api_platform.jsonapi.normalizer.constraint_violation_list', 'ApiPlatform\JsonApi\Serializer\ConstraintViolationListNormalizer') + $services->set('api_platform.jsonapi.normalizer.constraint_violation_list', ConstraintViolationListNormalizer::class) ->args([ service('api_platform.metadata.property.metadata_factory'), service('api_platform.jsonapi.name_converter.reserved_attribute_name'), ]) ->tag('serializer.normalizer', ['priority' => -780]); - $services->set('api_platform.jsonapi.normalizer.error', 'ApiPlatform\JsonApi\Serializer\ErrorNormalizer') + $services->set('api_platform.jsonapi.normalizer.error', ErrorNormalizer::class) ->args([service('api_platform.jsonapi.normalizer.item')]) ->tag('serializer.normalizer', ['priority' => -790]); }; diff --git a/src/Symfony/Bundle/Resources/config/jsonld.php b/src/Symfony/Bundle/Resources/config/jsonld.php index ced92430f5..b0e65149ed 100644 --- a/src/Symfony/Bundle/Resources/config/jsonld.php +++ b/src/Symfony/Bundle/Resources/config/jsonld.php @@ -13,10 +13,17 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; +use ApiPlatform\JsonLd\ContextBuilder; +use ApiPlatform\JsonLd\Serializer\ErrorNormalizer; +use ApiPlatform\JsonLd\Serializer\ItemNormalizer; +use ApiPlatform\JsonLd\Serializer\ObjectNormalizer; +use ApiPlatform\Serializer\JsonEncoder; +use ApiPlatform\Symfony\Validator\Serializer\ValidationExceptionNormalizer; + return static function (ContainerConfigurator $container) { $services = $container->services(); - $services->set('api_platform.jsonld.context_builder', 'ApiPlatform\JsonLd\ContextBuilder') + $services->set('api_platform.jsonld.context_builder', ContextBuilder::class) ->args([ service('api_platform.metadata.resource.name_collection_factory'), service('api_platform.metadata.resource.metadata_collection_factory'), @@ -28,7 +35,7 @@ '%api_platform.serializer.default_context%', ]); - $services->set('api_platform.jsonld.normalizer.item', 'ApiPlatform\JsonLd\Serializer\ItemNormalizer') + $services->set('api_platform.jsonld.normalizer.item', ItemNormalizer::class) ->args([ service('api_platform.metadata.resource.metadata_collection_factory'), service('api_platform.metadata.property.name_collection_factory'), @@ -45,14 +52,14 @@ ]) ->tag('serializer.normalizer', ['priority' => -890]); - $services->set('api_platform.jsonld.normalizer.error', 'ApiPlatform\JsonLd\Serializer\ErrorNormalizer') + $services->set('api_platform.jsonld.normalizer.error', ErrorNormalizer::class) ->args([ service('api_platform.jsonld.normalizer.item'), '%api_platform.serializer.default_context%', ]) ->tag('serializer.normalizer', ['priority' => -880]); - $services->set('api_platform.jsonld.normalizer.object', 'ApiPlatform\JsonLd\Serializer\ObjectNormalizer') + $services->set('api_platform.jsonld.normalizer.object', ObjectNormalizer::class) ->args([ service('serializer.normalizer.object'), service('api_platform.iri_converter'), @@ -60,14 +67,14 @@ ]) ->tag('serializer.normalizer', ['priority' => -995]); - $services->set('api_platform.jsonld.normalizer.validation_exception', 'ApiPlatform\Symfony\Validator\Serializer\ValidationExceptionNormalizer') + $services->set('api_platform.jsonld.normalizer.validation_exception', ValidationExceptionNormalizer::class) ->args([ service('api_platform.jsonld.normalizer.error'), service('api_platform.name_converter')->ignoreOnInvalid(), ]) ->tag('serializer.normalizer', ['priority' => -800]); - $services->set('api_platform.jsonld.encoder', 'ApiPlatform\Serializer\JsonEncoder') + $services->set('api_platform.jsonld.encoder', JsonEncoder::class) ->args([ 'jsonld', service('serializer.json.encoder')->nullOnInvalid(), diff --git a/src/Symfony/Bundle/Resources/config/link_security.php b/src/Symfony/Bundle/Resources/config/link_security.php index a4fc385657..6309adf93b 100644 --- a/src/Symfony/Bundle/Resources/config/link_security.php +++ b/src/Symfony/Bundle/Resources/config/link_security.php @@ -13,10 +13,12 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; +use ApiPlatform\State\ParameterProvider\ReadLinkParameterProvider; + return static function (ContainerConfigurator $container) { $services = $container->services(); - $services->set('api_platform.state_provider.read_link', 'ApiPlatform\State\ParameterProvider\ReadLinkParameterProvider') + $services->set('api_platform.state_provider.read_link', ReadLinkParameterProvider::class) ->args([ service('api_platform.state_provider.locator'), service('api_platform.metadata.resource.metadata_collection_factory'), diff --git a/src/Symfony/Bundle/Resources/config/maker.php b/src/Symfony/Bundle/Resources/config/maker.php index 108d3ca304..596a02afe8 100644 --- a/src/Symfony/Bundle/Resources/config/maker.php +++ b/src/Symfony/Bundle/Resources/config/maker.php @@ -13,18 +13,22 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; +use ApiPlatform\Symfony\Maker\MakeFilter; +use ApiPlatform\Symfony\Maker\MakeStateProcessor; +use ApiPlatform\Symfony\Maker\MakeStateProvider; + return static function (ContainerConfigurator $container) { $services = $container->services(); - $services->set('api_platform.maker.command.state_processor', 'ApiPlatform\Symfony\Maker\MakeStateProcessor') + $services->set('api_platform.maker.command.state_processor', MakeStateProcessor::class) ->args([service('api_platform.metadata.resource.name_collection_factory')]) ->tag('maker.command'); - $services->set('api_platform.maker.command.state_provider', 'ApiPlatform\Symfony\Maker\MakeStateProvider') + $services->set('api_platform.maker.command.state_provider', MakeStateProvider::class) ->args([service('api_platform.metadata.resource.name_collection_factory')]) ->tag('maker.command'); - $services->set('api_platform.maker.command.filter', 'ApiPlatform\Symfony\Maker\MakeFilter') + $services->set('api_platform.maker.command.filter', MakeFilter::class) ->args([service('api_platform.metadata.resource.name_collection_factory')]) ->tag('maker.command'); }; diff --git a/src/Symfony/Bundle/Resources/config/messenger.php b/src/Symfony/Bundle/Resources/config/messenger.php index d33addbcc5..9424cdf3b4 100644 --- a/src/Symfony/Bundle/Resources/config/messenger.php +++ b/src/Symfony/Bundle/Resources/config/messenger.php @@ -13,16 +13,19 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; +use ApiPlatform\Symfony\Messenger\Metadata\MessengerResourceMetadataCollectionFactory; +use ApiPlatform\Symfony\Messenger\Processor; + return static function (ContainerConfigurator $container) { $services = $container->services(); $services->alias('api_platform.message_bus', 'messenger.default_bus'); - $services->set('api_platform.messenger.metadata.resource.metadata_collection_factory', 'ApiPlatform\Symfony\Messenger\Metadata\MessengerResourceMetadataCollectionFactory') + $services->set('api_platform.messenger.metadata.resource.metadata_collection_factory', MessengerResourceMetadataCollectionFactory::class) ->decorate('api_platform.metadata.resource.metadata_collection_factory', null, 50) ->args([service('api_platform.messenger.metadata.resource.metadata_collection_factory.inner')]); - $services->set('ApiPlatform\Symfony\Messenger\Processor', 'ApiPlatform\Symfony\Messenger\Processor') + $services->set('ApiPlatform\Symfony\Messenger\Processor', Processor::class) ->args([service('api_platform.message_bus')]) ->tag('api_platform.state_processor', ['priority' => -900]); }; diff --git a/src/Symfony/Bundle/Resources/config/metadata/links.php b/src/Symfony/Bundle/Resources/config/metadata/links.php index b0ee019aa6..b05f49594c 100644 --- a/src/Symfony/Bundle/Resources/config/metadata/links.php +++ b/src/Symfony/Bundle/Resources/config/metadata/links.php @@ -13,10 +13,12 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; +use ApiPlatform\Metadata\Resource\Factory\LinkFactory; + return static function (ContainerConfigurator $container) { $services = $container->services(); - $services->set('api_platform.metadata.resource.link_factory', 'ApiPlatform\Metadata\Resource\Factory\LinkFactory') + $services->set('api_platform.metadata.resource.link_factory', LinkFactory::class) ->args([ service('api_platform.metadata.property.name_collection_factory'), service('api_platform.metadata.property.metadata_factory'), diff --git a/src/Symfony/Bundle/Resources/config/metadata/mutator.php b/src/Symfony/Bundle/Resources/config/metadata/mutator.php index 510cd46c34..e9290ecde2 100644 --- a/src/Symfony/Bundle/Resources/config/metadata/mutator.php +++ b/src/Symfony/Bundle/Resources/config/metadata/mutator.php @@ -13,10 +13,13 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; +use ApiPlatform\Metadata\Mutator\OperationMutatorCollection; +use ApiPlatform\Metadata\Mutator\ResourceMutatorCollection; + return static function (ContainerConfigurator $container) { $services = $container->services(); - $services->set('api_platform.metadata.mutator_collection.resource', 'ApiPlatform\Metadata\Mutator\ResourceMutatorCollection'); + $services->set('api_platform.metadata.mutator_collection.resource', ResourceMutatorCollection::class); - $services->set('api_platform.metadata.mutator_collection.operation', 'ApiPlatform\Metadata\Mutator\OperationMutatorCollection'); + $services->set('api_platform.metadata.mutator_collection.operation', OperationMutatorCollection::class); }; diff --git a/src/Symfony/Bundle/Resources/config/metadata/operation.php b/src/Symfony/Bundle/Resources/config/metadata/operation.php index 2a71c8343f..bf453f85db 100644 --- a/src/Symfony/Bundle/Resources/config/metadata/operation.php +++ b/src/Symfony/Bundle/Resources/config/metadata/operation.php @@ -13,14 +13,17 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; +use ApiPlatform\Metadata\Operation\Factory\OperationMetadataFactory; +use ApiPlatform\Metadata\Operation\Factory\OperationMetadataFactoryInterface; + return static function (ContainerConfigurator $container) { $services = $container->services(); - $services->set('api_platform.metadata.operation.metadata_factory', 'ApiPlatform\Metadata\Operation\Factory\OperationMetadataFactory') + $services->set('api_platform.metadata.operation.metadata_factory', OperationMetadataFactory::class) ->args([ service('api_platform.metadata.resource.name_collection_factory'), service('api_platform.metadata.resource.metadata_collection_factory'), ]); - $services->alias('ApiPlatform\Metadata\Operation\Factory\OperationMetadataFactoryInterface', 'api_platform.metadata.operation.metadata_factory'); + $services->alias(OperationMetadataFactoryInterface::class, 'api_platform.metadata.operation.metadata_factory'); }; diff --git a/src/Symfony/Bundle/Resources/config/metadata/php.php b/src/Symfony/Bundle/Resources/config/metadata/php.php index 3cc65adf7e..7dbaa00ea3 100644 --- a/src/Symfony/Bundle/Resources/config/metadata/php.php +++ b/src/Symfony/Bundle/Resources/config/metadata/php.php @@ -13,10 +13,12 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; +use ApiPlatform\Metadata\Extractor\PhpFileResourceExtractor; + return static function (ContainerConfigurator $container) { $services = $container->services(); - $services->set('api_platform.metadata.resource_extractor.php_file', 'ApiPlatform\Metadata\Extractor\PhpFileResourceExtractor') + $services->set('api_platform.metadata.resource_extractor.php_file', PhpFileResourceExtractor::class) ->args([ [], service('service_container'), diff --git a/src/Symfony/Bundle/Resources/config/metadata/php_doc.php b/src/Symfony/Bundle/Resources/config/metadata/php_doc.php index 35cf14f4a7..50e40c3e5b 100644 --- a/src/Symfony/Bundle/Resources/config/metadata/php_doc.php +++ b/src/Symfony/Bundle/Resources/config/metadata/php_doc.php @@ -13,10 +13,12 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; +use ApiPlatform\Metadata\Resource\Factory\PhpDocResourceMetadataCollectionFactory; + return static function (ContainerConfigurator $container) { $services = $container->services(); - $services->set('api_platform.metadata.resource.metadata_collection_factory.php_doc', 'ApiPlatform\Metadata\Resource\Factory\PhpDocResourceMetadataCollectionFactory') + $services->set('api_platform.metadata.resource.metadata_collection_factory.php_doc', PhpDocResourceMetadataCollectionFactory::class) ->decorate('api_platform.metadata.resource.metadata_collection_factory', null, 200) ->args([service('api_platform.metadata.resource.metadata_collection_factory.php_doc.inner')]); }; diff --git a/src/Symfony/Bundle/Resources/config/metadata/property.php b/src/Symfony/Bundle/Resources/config/metadata/property.php index 2a0dc99f5e..bfcc0f359d 100644 --- a/src/Symfony/Bundle/Resources/config/metadata/property.php +++ b/src/Symfony/Bundle/Resources/config/metadata/property.php @@ -13,25 +13,34 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; +use ApiPlatform\Metadata\Property\Factory\AttributePropertyMetadataFactory; +use ApiPlatform\Metadata\Property\Factory\CachedPropertyMetadataFactory; +use ApiPlatform\Metadata\Property\Factory\DefaultPropertyMetadataFactory; +use ApiPlatform\Metadata\Property\Factory\ExtractorPropertyMetadataFactory; +use ApiPlatform\Metadata\Property\Factory\IdentifierPropertyMetadataFactory; +use ApiPlatform\Metadata\Property\Factory\PropertyInfoPropertyMetadataFactory; +use ApiPlatform\Metadata\Property\Factory\PropertyMetadataFactoryInterface; +use ApiPlatform\Metadata\Property\Factory\SerializerPropertyMetadataFactory; + return function (ContainerConfigurator $container) { $services = $container->services(); $services->alias('api_platform.metadata.property.metadata_factory', 'api_platform.metadata.property.metadata_factory.xml'); - $services->alias('ApiPlatform\Metadata\Property\Factory\PropertyMetadataFactoryInterface', 'api_platform.metadata.property.metadata_factory'); + $services->alias(PropertyMetadataFactoryInterface::class, 'api_platform.metadata.property.metadata_factory'); - $services->set('api_platform.metadata.property.metadata_factory.property_info', 'ApiPlatform\Metadata\Property\Factory\PropertyInfoPropertyMetadataFactory') + $services->set('api_platform.metadata.property.metadata_factory.property_info', PropertyInfoPropertyMetadataFactory::class) ->decorate('api_platform.metadata.property.metadata_factory', null, 40) ->args([ service('api_platform.property_info'), service('api_platform.metadata.property.metadata_factory.property_info.inner'), ]); - $services->set('api_platform.metadata.property.metadata_factory.attribute', 'ApiPlatform\Metadata\Property\Factory\AttributePropertyMetadataFactory') + $services->set('api_platform.metadata.property.metadata_factory.attribute', AttributePropertyMetadataFactory::class) ->decorate('api_platform.metadata.property.metadata_factory', null, 35) ->args([service('api_platform.metadata.property.metadata_factory.attribute.inner')]); - $services->set('api_platform.metadata.property.metadata_factory.serializer', 'ApiPlatform\Metadata\Property\Factory\SerializerPropertyMetadataFactory') + $services->set('api_platform.metadata.property.metadata_factory.serializer', SerializerPropertyMetadataFactory::class) ->decorate('api_platform.metadata.property.metadata_factory', null, 30) ->args([ service('serializer.mapping.class_metadata_factory'), @@ -39,25 +48,25 @@ service('api_platform.resource_class_resolver'), ]); - $services->set('api_platform.metadata.property.metadata_factory.cached', 'ApiPlatform\Metadata\Property\Factory\CachedPropertyMetadataFactory') + $services->set('api_platform.metadata.property.metadata_factory.cached', CachedPropertyMetadataFactory::class) ->decorate('api_platform.metadata.property.metadata_factory', null, -10) ->args([ service('api_platform.cache.metadata.property'), service('api_platform.metadata.property.metadata_factory.cached.inner'), ]); - $services->set('api_platform.metadata.property.metadata_factory.default_property', 'ApiPlatform\Metadata\Property\Factory\DefaultPropertyMetadataFactory') + $services->set('api_platform.metadata.property.metadata_factory.default_property', DefaultPropertyMetadataFactory::class) ->decorate('api_platform.metadata.property.metadata_factory', null, 30) ->args([service('api_platform.metadata.property.metadata_factory.default_property.inner')]); - $services->set('api_platform.metadata.property.metadata_factory.identifier', 'ApiPlatform\Metadata\Property\Factory\IdentifierPropertyMetadataFactory') + $services->set('api_platform.metadata.property.metadata_factory.identifier', IdentifierPropertyMetadataFactory::class) ->decorate('api_platform.metadata.property.metadata_factory', null, 30) ->args([ service('api_platform.resource_class_resolver'), service('api_platform.metadata.property.metadata_factory.identifier.inner'), ]); - $services->set('api_platform.metadata.property.metadata_factory.xml', 'ApiPlatform\Metadata\Property\Factory\ExtractorPropertyMetadataFactory') + $services->set('api_platform.metadata.property.metadata_factory.xml', ExtractorPropertyMetadataFactory::class) ->args([service('api_platform.metadata.property_extractor.xml')]); $services->set('api_platform.cache.metadata.property') diff --git a/src/Symfony/Bundle/Resources/config/metadata/property_name.php b/src/Symfony/Bundle/Resources/config/metadata/property_name.php index 3bc40cd6a9..75a3962ef4 100644 --- a/src/Symfony/Bundle/Resources/config/metadata/property_name.php +++ b/src/Symfony/Bundle/Resources/config/metadata/property_name.php @@ -13,31 +13,37 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; +use ApiPlatform\Metadata\Property\Factory\CachedPropertyNameCollectionFactory; +use ApiPlatform\Metadata\Property\Factory\ConcernsPropertyNameCollectionMetadataFactory; +use ApiPlatform\Metadata\Property\Factory\ExtractorPropertyNameCollectionFactory; +use ApiPlatform\Metadata\Property\Factory\PropertyInfoPropertyNameCollectionFactory; +use ApiPlatform\Metadata\Property\Factory\PropertyNameCollectionFactoryInterface; + return static function (ContainerConfigurator $container) { $services = $container->services(); $services->alias('api_platform.metadata.property.name_collection_factory', 'api_platform.metadata.property.name_collection_factory.property_info'); - $services->alias('ApiPlatform\Metadata\Property\Factory\PropertyNameCollectionFactoryInterface', 'api_platform.metadata.property.name_collection_factory'); + $services->alias(PropertyNameCollectionFactoryInterface::class, 'api_platform.metadata.property.name_collection_factory'); - $services->set('api_platform.metadata.property.name_collection_factory.property_info', 'ApiPlatform\Metadata\Property\Factory\PropertyInfoPropertyNameCollectionFactory') + $services->set('api_platform.metadata.property.name_collection_factory.property_info', PropertyInfoPropertyNameCollectionFactory::class) ->args([service('api_platform.property_info')]); - $services->set('api_platform.metadata.property.name_collection_factory.cached', 'ApiPlatform\Metadata\Property\Factory\CachedPropertyNameCollectionFactory') + $services->set('api_platform.metadata.property.name_collection_factory.cached', CachedPropertyNameCollectionFactory::class) ->decorate('api_platform.metadata.property.name_collection_factory', null, -10) ->args([ service('api_platform.cache.metadata.property'), service('api_platform.metadata.property.name_collection_factory.cached.inner'), ]); - $services->set('api_platform.metadata.property.name_collection_factory.xml', 'ApiPlatform\Metadata\Property\Factory\ExtractorPropertyNameCollectionFactory') + $services->set('api_platform.metadata.property.name_collection_factory.xml', ExtractorPropertyNameCollectionFactory::class) ->decorate('api_platform.metadata.property.name_collection_factory', null, 0) ->args([ service('api_platform.metadata.property_extractor.xml'), service('api_platform.metadata.property.name_collection_factory.xml.inner'), ]); - $services->set('api_platform.metadata.property.name_collection_factory.concerns', 'ApiPlatform\Metadata\Property\Factory\ConcernsPropertyNameCollectionMetadataFactory') + $services->set('api_platform.metadata.property.name_collection_factory.concerns', ConcernsPropertyNameCollectionMetadataFactory::class) ->decorate('api_platform.metadata.property.name_collection_factory', null, 0) ->args([service('api_platform.metadata.property.name_collection_factory.concerns.inner')]); }; diff --git a/src/Symfony/Bundle/Resources/config/metadata/resource.php b/src/Symfony/Bundle/Resources/config/metadata/resource.php index d73cc3ec2a..0e0b3c088d 100644 --- a/src/Symfony/Bundle/Resources/config/metadata/resource.php +++ b/src/Symfony/Bundle/Resources/config/metadata/resource.php @@ -13,14 +13,33 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; +use ApiPlatform\Metadata\Resource\Factory\AlternateUriResourceMetadataCollectionFactory; +use ApiPlatform\Metadata\Resource\Factory\AttributesResourceMetadataCollectionFactory; +use ApiPlatform\Metadata\Resource\Factory\BackedEnumResourceMetadataCollectionFactory; +use ApiPlatform\Metadata\Resource\Factory\CachedResourceMetadataCollectionFactory; +use ApiPlatform\Metadata\Resource\Factory\ConcernsResourceMetadataCollectionFactory; +use ApiPlatform\Metadata\Resource\Factory\ExtractorResourceMetadataCollectionFactory; +use ApiPlatform\Metadata\Resource\Factory\FiltersResourceMetadataCollectionFactory; +use ApiPlatform\Metadata\Resource\Factory\FormatsResourceMetadataCollectionFactory; +use ApiPlatform\Metadata\Resource\Factory\InputOutputResourceMetadataCollectionFactory; +use ApiPlatform\Metadata\Resource\Factory\LinkResourceMetadataCollectionFactory; +use ApiPlatform\Metadata\Resource\Factory\MainControllerResourceMetadataCollectionFactory; +use ApiPlatform\Metadata\Resource\Factory\MutatorResourceMetadataCollectionFactory; +use ApiPlatform\Metadata\Resource\Factory\NotExposedOperationResourceMetadataCollectionFactory; +use ApiPlatform\Metadata\Resource\Factory\OperationNameResourceMetadataCollectionFactory; +use ApiPlatform\Metadata\Resource\Factory\ParameterResourceMetadataCollectionFactory; +use ApiPlatform\Metadata\Resource\Factory\PhpFileResourceMetadataCollectionFactory; +use ApiPlatform\Metadata\Resource\Factory\ResourceMetadataCollectionFactoryInterface; +use ApiPlatform\Metadata\Resource\Factory\UriTemplateResourceMetadataCollectionFactory; + return function (ContainerConfigurator $container) { $services = $container->services(); $services->alias('api_platform.metadata.resource.metadata_collection_factory', 'api_platform.metadata.resource.metadata_collection_factory.attributes'); - $services->alias('ApiPlatform\Metadata\Resource\Factory\ResourceMetadataCollectionFactoryInterface', 'api_platform.metadata.resource.metadata_collection_factory'); + $services->alias(ResourceMetadataCollectionFactoryInterface::class, 'api_platform.metadata.resource.metadata_collection_factory'); - $services->set('api_platform.metadata.resource.metadata_collection_factory.attributes', 'ApiPlatform\Metadata\Resource\Factory\AttributesResourceMetadataCollectionFactory') + $services->set('api_platform.metadata.resource.metadata_collection_factory.attributes', AttributesResourceMetadataCollectionFactory::class) ->args([ null, service('logger')->nullOnInvalid(), @@ -28,7 +47,7 @@ '%api_platform.graphql.enabled%', ]); - $services->set('api_platform.metadata.resource.metadata_collection_factory.xml', 'ApiPlatform\Metadata\Resource\Factory\ExtractorResourceMetadataCollectionFactory') + $services->set('api_platform.metadata.resource.metadata_collection_factory.xml', ExtractorResourceMetadataCollectionFactory::class) ->decorate('api_platform.metadata.resource.metadata_collection_factory', null, 800) ->args([ service('api_platform.metadata.resource_extractor.xml'), @@ -38,7 +57,7 @@ '%api_platform.graphql.enabled%', ]); - $services->set('api_platform.metadata.resource.metadata_collection_factory.php_file', 'ApiPlatform\Metadata\Resource\Factory\PhpFileResourceMetadataCollectionFactory') + $services->set('api_platform.metadata.resource.metadata_collection_factory.php_file', PhpFileResourceMetadataCollectionFactory::class) ->decorate('api_platform.metadata.resource.metadata_collection_factory', null, 800) ->args([ service('api_platform.metadata.resource_extractor.php_file'), @@ -47,7 +66,7 @@ '%api_platform.defaults%', ]); - $services->set('api_platform.metadata.resource.metadata_collection_factory.mutator', 'ApiPlatform\Metadata\Resource\Factory\MutatorResourceMetadataCollectionFactory') + $services->set('api_platform.metadata.resource.metadata_collection_factory.mutator', MutatorResourceMetadataCollectionFactory::class) ->decorate('api_platform.metadata.resource.metadata_collection_factory', null, 800) ->args([ service('api_platform.metadata.mutator_collection.resource'), @@ -55,7 +74,7 @@ service('api_platform.metadata.resource.metadata_collection_factory.mutator.inner'), ]); - $services->set('api_platform.metadata.resource.metadata_collection_factory.concerns', 'ApiPlatform\Metadata\Resource\Factory\ConcernsResourceMetadataCollectionFactory') + $services->set('api_platform.metadata.resource.metadata_collection_factory.concerns', ConcernsResourceMetadataCollectionFactory::class) ->decorate('api_platform.metadata.resource.metadata_collection_factory', null, 800) ->args([ service('api_platform.metadata.resource.metadata_collection_factory.concerns.inner'), @@ -64,18 +83,18 @@ '%api_platform.graphql.enabled%', ]); - $services->set('api_platform.metadata.resource.metadata_collection_factory.not_exposed_operation', 'ApiPlatform\Metadata\Resource\Factory\NotExposedOperationResourceMetadataCollectionFactory') + $services->set('api_platform.metadata.resource.metadata_collection_factory.not_exposed_operation', NotExposedOperationResourceMetadataCollectionFactory::class) ->decorate('api_platform.metadata.resource.metadata_collection_factory', null, 700) ->args([ service('api_platform.metadata.resource.link_factory'), service('api_platform.metadata.resource.metadata_collection_factory.not_exposed_operation.inner'), ]); - $services->set('api_platform.metadata.resource.metadata_collection_factory.backed_enum', 'ApiPlatform\Metadata\Resource\Factory\BackedEnumResourceMetadataCollectionFactory') + $services->set('api_platform.metadata.resource.metadata_collection_factory.backed_enum', BackedEnumResourceMetadataCollectionFactory::class) ->decorate('api_platform.metadata.resource.metadata_collection_factory', null, 500) ->args([service('api_platform.metadata.resource.metadata_collection_factory.backed_enum.inner')]); - $services->set('api_platform.metadata.resource.metadata_collection_factory.uri_template', 'ApiPlatform\Metadata\Resource\Factory\UriTemplateResourceMetadataCollectionFactory') + $services->set('api_platform.metadata.resource.metadata_collection_factory.uri_template', UriTemplateResourceMetadataCollectionFactory::class) ->decorate('api_platform.metadata.resource.metadata_collection_factory', null, 500) ->args([ service('api_platform.metadata.resource.link_factory'), @@ -83,14 +102,14 @@ service('api_platform.metadata.resource.metadata_collection_factory.uri_template.inner'), ]); - $services->set('api_platform.metadata.resource.metadata_collection_factory.main_controller', 'ApiPlatform\Metadata\Resource\Factory\MainControllerResourceMetadataCollectionFactory') + $services->set('api_platform.metadata.resource.metadata_collection_factory.main_controller', MainControllerResourceMetadataCollectionFactory::class) ->decorate('api_platform.metadata.resource.metadata_collection_factory', null, 500) ->args([ service('api_platform.metadata.resource.metadata_collection_factory.main_controller.inner'), '%api_platform.use_symfony_listeners%', ]); - $services->set('api_platform.metadata.resource.metadata_collection_factory.link', 'ApiPlatform\Metadata\Resource\Factory\LinkResourceMetadataCollectionFactory') + $services->set('api_platform.metadata.resource.metadata_collection_factory.link', LinkResourceMetadataCollectionFactory::class) ->decorate('api_platform.metadata.resource.metadata_collection_factory', null, 500) ->args([ service('api_platform.metadata.resource.link_factory'), @@ -98,15 +117,15 @@ '%api_platform.graphql.enabled%', ]); - $services->set('api_platform.metadata.resource.metadata_collection_factory.operation_name', 'ApiPlatform\Metadata\Resource\Factory\OperationNameResourceMetadataCollectionFactory') + $services->set('api_platform.metadata.resource.metadata_collection_factory.operation_name', OperationNameResourceMetadataCollectionFactory::class) ->decorate('api_platform.metadata.resource.metadata_collection_factory', null, 200) ->args([service('api_platform.metadata.resource.metadata_collection_factory.operation_name.inner')]); - $services->set('api_platform.metadata.resource.metadata_collection_factory.input_output', 'ApiPlatform\Metadata\Resource\Factory\InputOutputResourceMetadataCollectionFactory') + $services->set('api_platform.metadata.resource.metadata_collection_factory.input_output', InputOutputResourceMetadataCollectionFactory::class) ->decorate('api_platform.metadata.resource.metadata_collection_factory', null, 200) ->args([service('api_platform.metadata.resource.metadata_collection_factory.input_output.inner')]); - $services->set('api_platform.metadata.resource.metadata_collection_factory.formats', 'ApiPlatform\Metadata\Resource\Factory\FormatsResourceMetadataCollectionFactory') + $services->set('api_platform.metadata.resource.metadata_collection_factory.formats', FormatsResourceMetadataCollectionFactory::class) ->decorate('api_platform.metadata.resource.metadata_collection_factory', null, 200) ->args([ service('api_platform.metadata.resource.metadata_collection_factory.formats.inner'), @@ -115,15 +134,15 @@ '%api_platform.error_formats%', ]); - $services->set('api_platform.metadata.resource.metadata_collection_factory.filters', 'ApiPlatform\Metadata\Resource\Factory\FiltersResourceMetadataCollectionFactory') + $services->set('api_platform.metadata.resource.metadata_collection_factory.filters', FiltersResourceMetadataCollectionFactory::class) ->decorate('api_platform.metadata.resource.metadata_collection_factory', null, 200) ->args([service('api_platform.metadata.resource.metadata_collection_factory.filters.inner')]); - $services->set('api_platform.metadata.resource.metadata_collection_factory.alternate_uri', 'ApiPlatform\Metadata\Resource\Factory\AlternateUriResourceMetadataCollectionFactory') + $services->set('api_platform.metadata.resource.metadata_collection_factory.alternate_uri', AlternateUriResourceMetadataCollectionFactory::class) ->decorate('api_platform.metadata.resource.metadata_collection_factory', null, 200) ->args([service('api_platform.metadata.resource.metadata_collection_factory.alternate_uri.inner')]); - $services->set('api_platform.metadata.resource.metadata_collection_factory.parameter', 'ApiPlatform\Metadata\Resource\Factory\ParameterResourceMetadataCollectionFactory') + $services->set('api_platform.metadata.resource.metadata_collection_factory.parameter', ParameterResourceMetadataCollectionFactory::class) ->decorate('api_platform.metadata.resource.metadata_collection_factory', null, 1000) ->args([ service('api_platform.metadata.property.name_collection_factory'), @@ -134,7 +153,7 @@ service('logger')->ignoreOnInvalid(), ]); - $services->set('api_platform.metadata.resource.metadata_collection_factory.cached', 'ApiPlatform\Metadata\Resource\Factory\CachedResourceMetadataCollectionFactory') + $services->set('api_platform.metadata.resource.metadata_collection_factory.cached', CachedResourceMetadataCollectionFactory::class) ->decorate('api_platform.metadata.resource.metadata_collection_factory', null, -10) ->args([ service('api_platform.cache.metadata.resource_collection'), diff --git a/src/Symfony/Bundle/Resources/config/metadata/resource_name.php b/src/Symfony/Bundle/Resources/config/metadata/resource_name.php index 6605d2faa0..bea58a3f06 100644 --- a/src/Symfony/Bundle/Resources/config/metadata/resource_name.php +++ b/src/Symfony/Bundle/Resources/config/metadata/resource_name.php @@ -13,6 +13,14 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; +use ApiPlatform\Metadata\Resource\Factory\AttributesResourceNameCollectionFactory; +use ApiPlatform\Metadata\Resource\Factory\CachedResourceNameCollectionFactory; +use ApiPlatform\Metadata\Resource\Factory\ClassNameResourceNameCollectionFactory; +use ApiPlatform\Metadata\Resource\Factory\ConcernsResourceNameCollectionFactory; +use ApiPlatform\Metadata\Resource\Factory\ExtractorResourceNameCollectionFactory; +use ApiPlatform\Metadata\Resource\Factory\PhpFileResourceNameCollectionFactory; +use ApiPlatform\Metadata\Resource\Factory\ResourceNameCollectionFactoryInterface; + return function (ContainerConfigurator $container) { $services = $container->services(); @@ -20,7 +28,7 @@ ->parent('cache.system') ->tag('cache.pool'); - $services->set('api_platform.metadata.resource.name_collection_factory.cached', 'ApiPlatform\Metadata\Resource\Factory\CachedResourceNameCollectionFactory') + $services->set('api_platform.metadata.resource.name_collection_factory.cached', CachedResourceNameCollectionFactory::class) ->decorate('api_platform.metadata.resource.name_collection_factory', null, -10) ->args([ service('api_platform.cache.metadata.resource'), @@ -29,33 +37,33 @@ $services->alias('api_platform.metadata.resource.name_collection_factory', 'api_platform.metadata.resource.name_collection_factory.xml'); - $services->set('api_platform.metadata.resource.name_collection_factory.xml', 'ApiPlatform\Metadata\Resource\Factory\ExtractorResourceNameCollectionFactory') + $services->set('api_platform.metadata.resource.name_collection_factory.xml', ExtractorResourceNameCollectionFactory::class) ->args([service('api_platform.metadata.resource_extractor.xml')]); - $services->set('api_platform.metadata.resource.name_collection_factory.php_file', 'ApiPlatform\Metadata\Resource\Factory\PhpFileResourceNameCollectionFactory') + $services->set('api_platform.metadata.resource.name_collection_factory.php_file', PhpFileResourceNameCollectionFactory::class) ->decorate('api_platform.metadata.resource.name_collection_factory', null, 900) ->args([ service('api_platform.metadata.resource_extractor.php_file'), service('api_platform.metadata.resource.name_collection_factory.php_file.inner'), ]); - $services->set('api_platform.metadata.resource.name_collection_factory.concerns', 'ApiPlatform\Metadata\Resource\Factory\ConcernsResourceNameCollectionFactory') + $services->set('api_platform.metadata.resource.name_collection_factory.concerns', ConcernsResourceNameCollectionFactory::class) ->decorate('api_platform.metadata.resource.name_collection_factory', null, 800) ->args([ '%api_platform.resource_class_directories%', service('api_platform.metadata.resource.name_collection_factory.concerns.inner'), ]); - $services->alias('ApiPlatform\Metadata\Resource\Factory\ResourceNameCollectionFactoryInterface', 'api_platform.metadata.resource.name_collection_factory'); + $services->alias(ResourceNameCollectionFactoryInterface::class, 'api_platform.metadata.resource.name_collection_factory'); - $services->set('api_platform.metadata.resource.name_collection_factory.attributes', 'ApiPlatform\Metadata\Resource\Factory\AttributesResourceNameCollectionFactory') + $services->set('api_platform.metadata.resource.name_collection_factory.attributes', AttributesResourceNameCollectionFactory::class) ->decorate('api_platform.metadata.resource.name_collection_factory', null, 0) ->args([ '%api_platform.resource_class_directories%', service('api_platform.metadata.resource.name_collection_factory.attributes.inner'), ]); - $services->set('api_platform.metadata.resource.name_collection_factory.class_name', 'ApiPlatform\Metadata\Resource\Factory\ClassNameResourceNameCollectionFactory') + $services->set('api_platform.metadata.resource.name_collection_factory.class_name', ClassNameResourceNameCollectionFactory::class) ->decorate('api_platform.metadata.resource.name_collection_factory', null, 0) ->args([ '%api_platform.class_name_resources%', diff --git a/src/Symfony/Bundle/Resources/config/metadata/validator.php b/src/Symfony/Bundle/Resources/config/metadata/validator.php index 508c4dcf1d..f663d3f60c 100644 --- a/src/Symfony/Bundle/Resources/config/metadata/validator.php +++ b/src/Symfony/Bundle/Resources/config/metadata/validator.php @@ -13,10 +13,26 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; +use ApiPlatform\Symfony\Validator\Metadata\Property\Restriction\PropertySchemaChoiceRestriction; +use ApiPlatform\Symfony\Validator\Metadata\Property\Restriction\PropertySchemaCollectionRestriction; +use ApiPlatform\Symfony\Validator\Metadata\Property\Restriction\PropertySchemaCountRestriction; +use ApiPlatform\Symfony\Validator\Metadata\Property\Restriction\PropertySchemaCssColorRestriction; +use ApiPlatform\Symfony\Validator\Metadata\Property\Restriction\PropertySchemaFormat; +use ApiPlatform\Symfony\Validator\Metadata\Property\Restriction\PropertySchemaGreaterThanOrEqualRestriction; +use ApiPlatform\Symfony\Validator\Metadata\Property\Restriction\PropertySchemaGreaterThanRestriction; +use ApiPlatform\Symfony\Validator\Metadata\Property\Restriction\PropertySchemaLengthRestriction; +use ApiPlatform\Symfony\Validator\Metadata\Property\Restriction\PropertySchemaLessThanOrEqualRestriction; +use ApiPlatform\Symfony\Validator\Metadata\Property\Restriction\PropertySchemaLessThanRestriction; +use ApiPlatform\Symfony\Validator\Metadata\Property\Restriction\PropertySchemaOneOfRestriction; +use ApiPlatform\Symfony\Validator\Metadata\Property\Restriction\PropertySchemaRangeRestriction; +use ApiPlatform\Symfony\Validator\Metadata\Property\Restriction\PropertySchemaRegexRestriction; +use ApiPlatform\Symfony\Validator\Metadata\Property\Restriction\PropertySchemaUniqueRestriction; +use ApiPlatform\Symfony\Validator\Metadata\Property\ValidatorPropertyMetadataFactory; + return static function (ContainerConfigurator $container) { $services = $container->services(); - $services->set('api_platform.metadata.property.metadata_factory.validator', 'ApiPlatform\Symfony\Validator\Metadata\Property\ValidatorPropertyMetadataFactory') + $services->set('api_platform.metadata.property.metadata_factory.validator', ValidatorPropertyMetadataFactory::class) ->decorate('api_platform.metadata.property.metadata_factory', null, 20) ->args([ service('validator'), @@ -24,47 +40,47 @@ tagged_iterator('api_platform.metadata.property_schema_restriction'), ]); - $services->set('api_platform.metadata.property_schema.choice_restriction', 'ApiPlatform\Symfony\Validator\Metadata\Property\Restriction\PropertySchemaChoiceRestriction') + $services->set('api_platform.metadata.property_schema.choice_restriction', PropertySchemaChoiceRestriction::class) ->tag('api_platform.metadata.property_schema_restriction'); - $services->set('api_platform.metadata.property_schema.collection_restriction', 'ApiPlatform\Symfony\Validator\Metadata\Property\Restriction\PropertySchemaCollectionRestriction') + $services->set('api_platform.metadata.property_schema.collection_restriction', PropertySchemaCollectionRestriction::class) ->args([tagged_iterator('api_platform.metadata.property_schema_restriction')]) ->tag('api_platform.metadata.property_schema_restriction'); - $services->set('api_platform.metadata.property_schema.count_restriction', 'ApiPlatform\Symfony\Validator\Metadata\Property\Restriction\PropertySchemaCountRestriction') + $services->set('api_platform.metadata.property_schema.count_restriction', PropertySchemaCountRestriction::class) ->tag('api_platform.metadata.property_schema_restriction'); - $services->set('api_platform.metadata.property_schema.css_color_restriction', 'ApiPlatform\Symfony\Validator\Metadata\Property\Restriction\PropertySchemaCssColorRestriction') + $services->set('api_platform.metadata.property_schema.css_color_restriction', PropertySchemaCssColorRestriction::class) ->tag('api_platform.metadata.property_schema_restriction'); - $services->set('api_platform.metadata.property_schema.greater_than_or_equal_restriction', 'ApiPlatform\Symfony\Validator\Metadata\Property\Restriction\PropertySchemaGreaterThanOrEqualRestriction') + $services->set('api_platform.metadata.property_schema.greater_than_or_equal_restriction', PropertySchemaGreaterThanOrEqualRestriction::class) ->tag('api_platform.metadata.property_schema_restriction'); - $services->set('api_platform.metadata.property_schema.greater_than_restriction', 'ApiPlatform\Symfony\Validator\Metadata\Property\Restriction\PropertySchemaGreaterThanRestriction') + $services->set('api_platform.metadata.property_schema.greater_than_restriction', PropertySchemaGreaterThanRestriction::class) ->tag('api_platform.metadata.property_schema_restriction'); - $services->set('api_platform.metadata.property_schema.length_restriction', 'ApiPlatform\Symfony\Validator\Metadata\Property\Restriction\PropertySchemaLengthRestriction') + $services->set('api_platform.metadata.property_schema.length_restriction', PropertySchemaLengthRestriction::class) ->tag('api_platform.metadata.property_schema_restriction'); - $services->set('api_platform.metadata.property_schema.less_than_or_equal_restriction', 'ApiPlatform\Symfony\Validator\Metadata\Property\Restriction\PropertySchemaLessThanOrEqualRestriction') + $services->set('api_platform.metadata.property_schema.less_than_or_equal_restriction', PropertySchemaLessThanOrEqualRestriction::class) ->tag('api_platform.metadata.property_schema_restriction'); - $services->set('api_platform.metadata.property_schema.less_than_restriction', 'ApiPlatform\Symfony\Validator\Metadata\Property\Restriction\PropertySchemaLessThanRestriction') + $services->set('api_platform.metadata.property_schema.less_than_restriction', PropertySchemaLessThanRestriction::class) ->tag('api_platform.metadata.property_schema_restriction'); - $services->set('api_platform.metadata.property_schema.one_of_restriction', 'ApiPlatform\Symfony\Validator\Metadata\Property\Restriction\PropertySchemaOneOfRestriction') + $services->set('api_platform.metadata.property_schema.one_of_restriction', PropertySchemaOneOfRestriction::class) ->args([tagged_iterator('api_platform.metadata.property_schema_restriction')]) ->tag('api_platform.metadata.property_schema_restriction'); - $services->set('api_platform.metadata.property_schema.range_restriction', 'ApiPlatform\Symfony\Validator\Metadata\Property\Restriction\PropertySchemaRangeRestriction') + $services->set('api_platform.metadata.property_schema.range_restriction', PropertySchemaRangeRestriction::class) ->tag('api_platform.metadata.property_schema_restriction'); - $services->set('api_platform.metadata.property_schema.regex_restriction', 'ApiPlatform\Symfony\Validator\Metadata\Property\Restriction\PropertySchemaRegexRestriction') + $services->set('api_platform.metadata.property_schema.regex_restriction', PropertySchemaRegexRestriction::class) ->tag('api_platform.metadata.property_schema_restriction'); - $services->set('api_platform.metadata.property_schema.format_restriction', 'ApiPlatform\Symfony\Validator\Metadata\Property\Restriction\PropertySchemaFormat') + $services->set('api_platform.metadata.property_schema.format_restriction', PropertySchemaFormat::class) ->tag('api_platform.metadata.property_schema_restriction'); - $services->set('api_platform.metadata.property_schema.unique_restriction', 'ApiPlatform\Symfony\Validator\Metadata\Property\Restriction\PropertySchemaUniqueRestriction') + $services->set('api_platform.metadata.property_schema.unique_restriction', PropertySchemaUniqueRestriction::class) ->tag('api_platform.metadata.property_schema_restriction'); }; diff --git a/src/Symfony/Bundle/Resources/config/metadata/xml.php b/src/Symfony/Bundle/Resources/config/metadata/xml.php index 85f652c887..105943590d 100644 --- a/src/Symfony/Bundle/Resources/config/metadata/xml.php +++ b/src/Symfony/Bundle/Resources/config/metadata/xml.php @@ -13,16 +13,19 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; +use ApiPlatform\Metadata\Extractor\XmlPropertyExtractor; +use ApiPlatform\Metadata\Extractor\XmlResourceExtractor; + return static function (ContainerConfigurator $container) { $services = $container->services(); - $services->set('api_platform.metadata.resource_extractor.xml', 'ApiPlatform\Metadata\Extractor\XmlResourceExtractor') + $services->set('api_platform.metadata.resource_extractor.xml', XmlResourceExtractor::class) ->args([ [], service('service_container'), ]); - $services->set('api_platform.metadata.property_extractor.xml', 'ApiPlatform\Metadata\Extractor\XmlPropertyExtractor') + $services->set('api_platform.metadata.property_extractor.xml', XmlPropertyExtractor::class) ->args([ [], service('service_container'), diff --git a/src/Symfony/Bundle/Resources/config/metadata/yaml.php b/src/Symfony/Bundle/Resources/config/metadata/yaml.php index 2478c69fa6..346b579970 100644 --- a/src/Symfony/Bundle/Resources/config/metadata/yaml.php +++ b/src/Symfony/Bundle/Resources/config/metadata/yaml.php @@ -13,29 +13,36 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; +use ApiPlatform\Metadata\Extractor\YamlPropertyExtractor; +use ApiPlatform\Metadata\Extractor\YamlResourceExtractor; +use ApiPlatform\Metadata\Property\Factory\ExtractorPropertyMetadataFactory; +use ApiPlatform\Metadata\Property\Factory\ExtractorPropertyNameCollectionFactory; +use ApiPlatform\Metadata\Resource\Factory\ExtractorResourceMetadataCollectionFactory; +use ApiPlatform\Metadata\Resource\Factory\ExtractorResourceNameCollectionFactory; + return static function (ContainerConfigurator $container) { $services = $container->services(); - $services->set('api_platform.metadata.resource_extractor.yaml', 'ApiPlatform\Metadata\Extractor\YamlResourceExtractor') + $services->set('api_platform.metadata.resource_extractor.yaml', YamlResourceExtractor::class) ->args([ [], service('service_container'), ]); - $services->set('api_platform.metadata.property_extractor.yaml', 'ApiPlatform\Metadata\Extractor\YamlPropertyExtractor') + $services->set('api_platform.metadata.property_extractor.yaml', YamlPropertyExtractor::class) ->args([ [], service('service_container'), ]); - $services->set('api_platform.metadata.resource.name_collection_factory.yaml', 'ApiPlatform\Metadata\Resource\Factory\ExtractorResourceNameCollectionFactory') + $services->set('api_platform.metadata.resource.name_collection_factory.yaml', ExtractorResourceNameCollectionFactory::class) ->decorate('api_platform.metadata.resource.name_collection_factory', null, 0) ->args([ service('api_platform.metadata.resource_extractor.yaml'), service('api_platform.metadata.resource.name_collection_factory.yaml.inner'), ]); - $services->set('api_platform.metadata.resource.metadata_collection_factory.yaml', 'ApiPlatform\Metadata\Resource\Factory\ExtractorResourceMetadataCollectionFactory') + $services->set('api_platform.metadata.resource.metadata_collection_factory.yaml', ExtractorResourceMetadataCollectionFactory::class) ->decorate('api_platform.metadata.resource.metadata_collection_factory', null, 800) ->args([ service('api_platform.metadata.resource_extractor.yaml'), @@ -45,14 +52,14 @@ '%api_platform.graphql.enabled%', ]); - $services->set('api_platform.metadata.property.metadata_factory.yaml', 'ApiPlatform\Metadata\Property\Factory\ExtractorPropertyMetadataFactory') + $services->set('api_platform.metadata.property.metadata_factory.yaml', ExtractorPropertyMetadataFactory::class) ->decorate('api_platform.metadata.property.metadata_factory', null, 20) ->args([ service('api_platform.metadata.property_extractor.yaml'), service('api_platform.metadata.property.metadata_factory.yaml.inner'), ]); - $services->set('api_platform.metadata.property.name_collection_factory.yaml', 'ApiPlatform\Metadata\Property\Factory\ExtractorPropertyNameCollectionFactory') + $services->set('api_platform.metadata.property.name_collection_factory.yaml', ExtractorPropertyNameCollectionFactory::class) ->decorate('api_platform.metadata.property.name_collection_factory', null, 0) ->args([ service('api_platform.metadata.property_extractor.yaml'), diff --git a/src/Symfony/Bundle/Resources/config/openapi.php b/src/Symfony/Bundle/Resources/config/openapi.php index 01e38352f5..b68eb55ed4 100644 --- a/src/Symfony/Bundle/Resources/config/openapi.php +++ b/src/Symfony/Bundle/Resources/config/openapi.php @@ -13,25 +13,38 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; +use ApiPlatform\OpenApi\Command\OpenApiCommand; +use ApiPlatform\OpenApi\Factory\OpenApiFactory; +use ApiPlatform\OpenApi\Factory\OpenApiFactoryInterface; +use ApiPlatform\OpenApi\Options; +use ApiPlatform\OpenApi\Serializer\ApiGatewayNormalizer; +use ApiPlatform\OpenApi\Serializer\LegacyOpenApiNormalizer; +use ApiPlatform\OpenApi\Serializer\OpenApiNormalizer; +use ApiPlatform\OpenApi\Serializer\SerializerContextBuilder; +use ApiPlatform\OpenApi\State\OpenApiProvider; +use ApiPlatform\Serializer\JsonEncoder; +use Symfony\Component\Serializer\Normalizer\ObjectNormalizer; +use Symfony\Component\Serializer\Serializer; + return function (ContainerConfigurator $container) { $services = $container->services(); - $services->set('api_platform.openapi.normalizer', 'ApiPlatform\OpenApi\Serializer\OpenApiNormalizer') - ->args([inline_service('Symfony\Component\Serializer\Serializer')->arg(0, [inline_service('Symfony\Component\Serializer\Normalizer\ObjectNormalizer')->arg(0, null)->arg(1, null)->arg(2, service('api_platform.property_accessor'))->arg(3, service('api_platform.property_info'))])->arg(1, [service('serializer.encoder.json')])]) + $services->set('api_platform.openapi.normalizer', OpenApiNormalizer::class) + ->args([inline_service(Serializer::class)->arg(0, [inline_service(ObjectNormalizer::class)->arg(0, null)->arg(1, null)->arg(2, service('api_platform.property_accessor'))->arg(3, service('api_platform.property_info'))])->arg(1, [service('serializer.encoder.json')])]) ->tag('serializer.normalizer', ['priority' => -795]); - $services->alias('ApiPlatform\OpenApi\Serializer\OpenApiNormalizer', 'api_platform.openapi.normalizer'); + $services->alias(OpenApiNormalizer::class, 'api_platform.openapi.normalizer'); - $services->set('api_platform.openapi.provider', 'ApiPlatform\OpenApi\State\OpenApiProvider') + $services->set('api_platform.openapi.provider', OpenApiProvider::class) ->args([service('api_platform.openapi.factory')]) ->tag('api_platform.state_provider', ['priority' => -100, 'key' => 'ApiPlatform\OpenApi\State\OpenApiProvider']) ->tag('api_platform.state_provider', ['priority' => -100, 'key' => 'api_platform.openapi.provider']); - $services->set('api_platform.openapi.serializer_context_builder', 'ApiPlatform\OpenApi\Serializer\SerializerContextBuilder') + $services->set('api_platform.openapi.serializer_context_builder', SerializerContextBuilder::class) ->decorate('api_platform.serializer.context_builder', null, 0) ->args([service('api_platform.openapi.serializer_context_builder.inner')]); - $services->set('api_platform.openapi.options', 'ApiPlatform\OpenApi\Options') + $services->set('api_platform.openapi.options', Options::class) ->args([ '%api_platform.title%', '%api_platform.description%', @@ -59,28 +72,28 @@ '%api_platform.openapi.license.identifier%', ]); - $services->alias('ApiPlatform\OpenApi\Options', 'api_platform.openapi.options'); + $services->alias(Options::class, 'api_platform.openapi.options'); - $services->set('api_platform.openapi.command', 'ApiPlatform\OpenApi\Command\OpenApiCommand') + $services->set('api_platform.openapi.command', OpenApiCommand::class) ->args([ service('api_platform.openapi.factory'), service('api_platform.serializer'), ]) ->tag('console.command'); - $services->set('api_platform.openapi.normalizer.api_gateway', 'ApiPlatform\OpenApi\Serializer\ApiGatewayNormalizer') + $services->set('api_platform.openapi.normalizer.api_gateway', ApiGatewayNormalizer::class) ->decorate('api_platform.openapi.normalizer', null, -1) ->args([service('api_platform.openapi.normalizer.api_gateway.inner')]) ->tag('serializer.normalizer'); - $services->set('api_platform.openapi.normalizer.legacy', 'ApiPlatform\OpenApi\Serializer\LegacyOpenApiNormalizer') + $services->set('api_platform.openapi.normalizer.legacy', LegacyOpenApiNormalizer::class) ->decorate('api_platform.openapi.normalizer.api_gateway', null, -2) ->args([service('api_platform.openapi.normalizer.legacy.inner')]) ->tag('serializer.normalizer'); - $services->alias('ApiPlatform\OpenApi\Factory\OpenApiFactoryInterface', 'api_platform.openapi.factory'); + $services->alias(OpenApiFactoryInterface::class, 'api_platform.openapi.factory'); - $services->set('api_platform.openapi.factory', 'ApiPlatform\OpenApi\Factory\OpenApiFactory') + $services->set('api_platform.openapi.factory', OpenApiFactory::class) ->args([ service('api_platform.metadata.resource.name_collection_factory'), service('api_platform.metadata.resource.metadata_collection_factory'), @@ -99,7 +112,7 @@ ->parent('cache.system') ->tag('cache.pool'); - $services->set('api_platform.jsonopenapi.encoder', 'ApiPlatform\Serializer\JsonEncoder') + $services->set('api_platform.jsonopenapi.encoder', JsonEncoder::class) ->args([ 'jsonopenapi', service('serializer.json.encoder')->nullOnInvalid(), diff --git a/src/Symfony/Bundle/Resources/config/openapi/yaml.php b/src/Symfony/Bundle/Resources/config/openapi/yaml.php index df7f77ff76..8454f84dab 100644 --- a/src/Symfony/Bundle/Resources/config/openapi/yaml.php +++ b/src/Symfony/Bundle/Resources/config/openapi/yaml.php @@ -13,10 +13,12 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; +use ApiPlatform\Serializer\YamlEncoder; + return static function (ContainerConfigurator $container) { $services = $container->services(); - $services->set('api_platform.yamlopenapi.encoder', 'ApiPlatform\Serializer\YamlEncoder') + $services->set('api_platform.yamlopenapi.encoder', YamlEncoder::class) ->args([ 'yamlopenapi', service('serializer.encoder.yaml')->nullOnInvalid(), diff --git a/src/Symfony/Bundle/Resources/config/problem.php b/src/Symfony/Bundle/Resources/config/problem.php index 8428e939e7..ebb4adad68 100644 --- a/src/Symfony/Bundle/Resources/config/problem.php +++ b/src/Symfony/Bundle/Resources/config/problem.php @@ -13,14 +13,17 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; +use ApiPlatform\Serializer\JsonEncoder; +use ApiPlatform\Symfony\Validator\Serializer\ValidationExceptionNormalizer; + return static function (ContainerConfigurator $container) { $services = $container->services(); - $services->set('api_platform.problem.encoder', 'ApiPlatform\Serializer\JsonEncoder') + $services->set('api_platform.problem.encoder', JsonEncoder::class) ->args(['jsonproblem']) ->tag('serializer.encoder'); - $services->set('api_platform.problem.normalizer.validation_exception', 'ApiPlatform\Symfony\Validator\Serializer\ValidationExceptionNormalizer') + $services->set('api_platform.problem.normalizer.validation_exception', ValidationExceptionNormalizer::class) ->args([ service('api_platform.serializer.normalizer.item'), service('api_platform.name_converter')->ignoreOnInvalid(), diff --git a/src/Symfony/Bundle/Resources/config/ramsey_uuid.php b/src/Symfony/Bundle/Resources/config/ramsey_uuid.php index 16a0b5396d..990d7aadc9 100644 --- a/src/Symfony/Bundle/Resources/config/ramsey_uuid.php +++ b/src/Symfony/Bundle/Resources/config/ramsey_uuid.php @@ -13,12 +13,15 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; +use ApiPlatform\RamseyUuid\Serializer\UuidDenormalizer; +use ApiPlatform\RamseyUuid\UriVariableTransformer\UuidUriVariableTransformer; + return static function (ContainerConfigurator $container) { $services = $container->services(); - $services->set('api_platform.serializer.uuid_denormalizer', 'ApiPlatform\RamseyUuid\Serializer\UuidDenormalizer') + $services->set('api_platform.serializer.uuid_denormalizer', UuidDenormalizer::class) ->tag('serializer.normalizer'); - $services->set('api_platform.ramsey_uuid.uri_variables.transformer.uuid', 'ApiPlatform\RamseyUuid\UriVariableTransformer\UuidUriVariableTransformer') + $services->set('api_platform.ramsey_uuid.uri_variables.transformer.uuid', UuidUriVariableTransformer::class) ->tag('api_platform.uri_variables.transformer', ['priority' => -100]); }; diff --git a/src/Symfony/Bundle/Resources/config/security.php b/src/Symfony/Bundle/Resources/config/security.php index 48e3154b8d..0976d4b6a1 100644 --- a/src/Symfony/Bundle/Resources/config/security.php +++ b/src/Symfony/Bundle/Resources/config/security.php @@ -13,12 +13,16 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; +use ApiPlatform\Metadata\ResourceAccessCheckerInterface; +use ApiPlatform\Symfony\Security\Core\Authorization\ExpressionLanguageProvider; +use ApiPlatform\Symfony\Security\ResourceAccessChecker; + return static function (ContainerConfigurator $container) { $services = $container->services(); $services->alias('api_platform.security.expression_language', 'security.expression_language'); - $services->set('api_platform.security.resource_access_checker', 'ApiPlatform\Symfony\Security\ResourceAccessChecker') + $services->set('api_platform.security.resource_access_checker', ResourceAccessChecker::class) ->args([ service('api_platform.security.expression_language')->nullOnInvalid(), service('security.authentication.trust_resolver')->nullOnInvalid(), @@ -27,8 +31,8 @@ service('security.authorization_checker')->nullOnInvalid(), ]); - $services->alias('ApiPlatform\Metadata\ResourceAccessCheckerInterface', 'api_platform.security.resource_access_checker'); + $services->alias(ResourceAccessCheckerInterface::class, 'api_platform.security.resource_access_checker'); - $services->set('api_platform.security.expression_language_provider', 'ApiPlatform\Symfony\Security\Core\Authorization\ExpressionLanguageProvider') + $services->set('api_platform.security.expression_language_provider', ExpressionLanguageProvider::class) ->tag('security.expression_language_provider'); }; diff --git a/src/Symfony/Bundle/Resources/config/state/http_cache_purger.php b/src/Symfony/Bundle/Resources/config/state/http_cache_purger.php index da1a0dbac1..58c93cc959 100644 --- a/src/Symfony/Bundle/Resources/config/state/http_cache_purger.php +++ b/src/Symfony/Bundle/Resources/config/state/http_cache_purger.php @@ -13,10 +13,12 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; +use ApiPlatform\HttpCache\State\AddTagsProcessor; + return static function (ContainerConfigurator $container) { $services = $container->services(); - $services->set('api_platform.http_cache_purger.processor.add_tags', 'ApiPlatform\HttpCache\State\AddTagsProcessor') + $services->set('api_platform.http_cache_purger.processor.add_tags', AddTagsProcessor::class) ->decorate('api_platform.state_processor.respond', null, 0) ->args([ service('api_platform.http_cache_purger.processor.add_tags.inner'), diff --git a/src/Symfony/Bundle/Resources/config/state/hydra.php b/src/Symfony/Bundle/Resources/config/state/hydra.php index 3cc66184b2..370d0612d9 100644 --- a/src/Symfony/Bundle/Resources/config/state/hydra.php +++ b/src/Symfony/Bundle/Resources/config/state/hydra.php @@ -13,10 +13,12 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; +use ApiPlatform\Hydra\State\HydraLinkProcessor; + return static function (ContainerConfigurator $container) { $services = $container->services(); - $services->set('api_platform.hydra.processor.link', 'ApiPlatform\Hydra\State\HydraLinkProcessor') + $services->set('api_platform.hydra.processor.link', HydraLinkProcessor::class) ->decorate('api_platform.state_processor.respond', null, 410) ->args([ service('api_platform.hydra.processor.link.inner'), diff --git a/src/Symfony/Bundle/Resources/config/state/jsonapi.php b/src/Symfony/Bundle/Resources/config/state/jsonapi.php index 0646d19dd3..011e445a1c 100644 --- a/src/Symfony/Bundle/Resources/config/state/jsonapi.php +++ b/src/Symfony/Bundle/Resources/config/state/jsonapi.php @@ -13,10 +13,12 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; +use ApiPlatform\JsonApi\State\JsonApiProvider; + return static function (ContainerConfigurator $container) { $services = $container->services(); - $services->set('api_platform.jsonapi.state_provider', 'ApiPlatform\JsonApi\State\JsonApiProvider') + $services->set('api_platform.jsonapi.state_provider', JsonApiProvider::class) ->decorate('api_platform.state_provider.read', null, 0) ->args([ service('api_platform.jsonapi.state_provider.inner'), diff --git a/src/Symfony/Bundle/Resources/config/state/jsonld.php b/src/Symfony/Bundle/Resources/config/state/jsonld.php index 18766f7bcb..5339d4dbef 100644 --- a/src/Symfony/Bundle/Resources/config/state/jsonld.php +++ b/src/Symfony/Bundle/Resources/config/state/jsonld.php @@ -13,10 +13,12 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; +use ApiPlatform\JsonLd\Action\ContextAction; + return static function (ContainerConfigurator $container) { $services = $container->services(); - $services->set('api_platform.jsonld.action.context', 'ApiPlatform\JsonLd\Action\ContextAction') + $services->set('api_platform.jsonld.action.context', ContextAction::class) ->public() ->args([ service('api_platform.jsonld.context_builder'), diff --git a/src/Symfony/Bundle/Resources/config/state/mercure.php b/src/Symfony/Bundle/Resources/config/state/mercure.php index 3bddf7e448..993bd87d48 100644 --- a/src/Symfony/Bundle/Resources/config/state/mercure.php +++ b/src/Symfony/Bundle/Resources/config/state/mercure.php @@ -13,10 +13,12 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; +use ApiPlatform\Symfony\State\MercureLinkProcessor; + return static function (ContainerConfigurator $container) { $services = $container->services(); - $services->set('api_platform.mercure.processor.add_link_header', 'ApiPlatform\Symfony\State\MercureLinkProcessor') + $services->set('api_platform.mercure.processor.add_link_header', MercureLinkProcessor::class) ->decorate('api_platform.state_processor.respond', null, 400) ->args([ service('api_platform.mercure.processor.add_link_header.inner'), diff --git a/src/Symfony/Bundle/Resources/config/state/object_mapper.php b/src/Symfony/Bundle/Resources/config/state/object_mapper.php index a80c78b9b6..24efc954d5 100644 --- a/src/Symfony/Bundle/Resources/config/state/object_mapper.php +++ b/src/Symfony/Bundle/Resources/config/state/object_mapper.php @@ -13,18 +13,24 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; +use ApiPlatform\Metadata\Resource\Factory\ObjectMapperMetadataCollectionFactory; +use ApiPlatform\State\ObjectMapper\ObjectMapper; +use ApiPlatform\State\Processor\ObjectMapperProcessor; +use ApiPlatform\State\Provider\ObjectMapperProvider; +use Symfony\Component\ObjectMapper\Metadata\ReflectionObjectMapperMetadataFactory; + return static function (ContainerConfigurator $container) { $services = $container->services(); - $services->set('api_platform.object_mapper.metadata_factory', 'Symfony\Component\ObjectMapper\Metadata\ReflectionObjectMapperMetadataFactory'); + $services->set('api_platform.object_mapper.metadata_factory', ReflectionObjectMapperMetadataFactory::class); $services->alias('api_platform.object_mapper', 'object_mapper'); - $services->set('api_platform.object_mapper.relation', 'ApiPlatform\State\ObjectMapper\ObjectMapper') + $services->set('api_platform.object_mapper.relation', ObjectMapper::class) ->decorate('api_platform.object_mapper', null, -255) ->args([service('api_platform.object_mapper.relation.inner')]); - $services->set('api_platform.state_provider.object_mapper', 'ApiPlatform\State\Provider\ObjectMapperProvider') + $services->set('api_platform.state_provider.object_mapper', ObjectMapperProvider::class) ->decorate('api_platform.state_provider.locator', null, 0) ->args([ service('api_platform.object_mapper')->nullOnInvalid(), @@ -32,7 +38,7 @@ service('api_platform.object_mapper.metadata_factory'), ]); - $services->set('api_platform.state_processor.object_mapper', 'ApiPlatform\State\Processor\ObjectMapperProcessor') + $services->set('api_platform.state_processor.object_mapper', ObjectMapperProcessor::class) ->decorate('api_platform.state_processor.locator', null, 0) ->args([ service('api_platform.object_mapper')->nullOnInvalid(), @@ -40,7 +46,7 @@ service('api_platform.object_mapper.metadata_factory'), ]); - $services->set('api_platform.metadata.resource.metadata_collection_factory.object_mapper', 'ApiPlatform\Metadata\Resource\Factory\ObjectMapperMetadataCollectionFactory') + $services->set('api_platform.metadata.resource.metadata_collection_factory.object_mapper', ObjectMapperMetadataCollectionFactory::class) ->decorate('api_platform.metadata.resource.metadata_collection_factory', null, 100) ->args([ service('api_platform.metadata.resource.metadata_collection_factory.object_mapper.inner'), diff --git a/src/Symfony/Bundle/Resources/config/state/parameter_provider.php b/src/Symfony/Bundle/Resources/config/state/parameter_provider.php index 47cb48f036..921c869c19 100644 --- a/src/Symfony/Bundle/Resources/config/state/parameter_provider.php +++ b/src/Symfony/Bundle/Resources/config/state/parameter_provider.php @@ -13,10 +13,12 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; +use ApiPlatform\State\ParameterProvider\IriConverterParameterProvider; + return static function (ContainerConfigurator $container) { $services = $container->services(); - $services->set('api_platform.state_provider.parameter.iri_converter', 'ApiPlatform\State\ParameterProvider\IriConverterParameterProvider') + $services->set('api_platform.state_provider.parameter.iri_converter', IriConverterParameterProvider::class) ->args([ service('api_platform.iri_converter'), service('logger')->ignoreOnInvalid(), diff --git a/src/Symfony/Bundle/Resources/config/state/processor.php b/src/Symfony/Bundle/Resources/config/state/processor.php index 365aae3844..839e1d5c2c 100644 --- a/src/Symfony/Bundle/Resources/config/state/processor.php +++ b/src/Symfony/Bundle/Resources/config/state/processor.php @@ -13,12 +13,17 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; +use ApiPlatform\State\Processor\AddLinkHeaderProcessor; +use ApiPlatform\State\Processor\RespondProcessor; +use ApiPlatform\State\Processor\SerializeProcessor; +use ApiPlatform\State\Processor\WriteProcessor; + return static function (ContainerConfigurator $container) { $services = $container->services(); $services->alias('api_platform.state_processor.main', 'api_platform.state_processor.respond'); - $services->set('api_platform.state_processor.serialize', 'ApiPlatform\State\Processor\SerializeProcessor') + $services->set('api_platform.state_processor.serialize', SerializeProcessor::class) ->decorate('api_platform.state_processor.main', null, 200) ->args([ service('api_platform.state_processor.serialize.inner'), @@ -26,21 +31,21 @@ service('api_platform.serializer.context_builder'), ]); - $services->set('api_platform.state_processor.write', 'ApiPlatform\State\Processor\WriteProcessor') + $services->set('api_platform.state_processor.write', WriteProcessor::class) ->decorate('api_platform.state_processor.main', null, 100) ->args([ service('api_platform.state_processor.write.inner'), service('api_platform.state_processor.locator'), ]); - $services->set('api_platform.state_processor.respond', 'ApiPlatform\State\Processor\RespondProcessor') + $services->set('api_platform.state_processor.respond', RespondProcessor::class) ->args([ service('api_platform.iri_converter'), service('api_platform.resource_class_resolver'), service('api_platform.metadata.operation.metadata_factory'), ]); - $services->set('api_platform.state_processor.add_link_header', 'ApiPlatform\State\Processor\AddLinkHeaderProcessor') + $services->set('api_platform.state_processor.add_link_header', AddLinkHeaderProcessor::class) ->decorate('api_platform.state_processor.respond', null, 0) ->args([service('api_platform.state_processor.add_link_header.inner')]); }; diff --git a/src/Symfony/Bundle/Resources/config/state/provider.php b/src/Symfony/Bundle/Resources/config/state/provider.php index 4185cc1a09..f31fc2bc7c 100644 --- a/src/Symfony/Bundle/Resources/config/state/provider.php +++ b/src/Symfony/Bundle/Resources/config/state/provider.php @@ -13,12 +13,18 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; +use ApiPlatform\State\Provider\ContentNegotiationProvider; +use ApiPlatform\State\Provider\DeserializeProvider; +use ApiPlatform\State\Provider\ParameterProvider; +use ApiPlatform\State\Provider\ReadProvider; +use ApiPlatform\Symfony\EventListener\ErrorListener; + return static function (ContainerConfigurator $container) { $services = $container->services(); $services->alias('api_platform.state_provider.main', 'api_platform.state_provider.locator'); - $services->set('api_platform.state_provider.content_negotiation', 'ApiPlatform\State\Provider\ContentNegotiationProvider') + $services->set('api_platform.state_provider.content_negotiation', ContentNegotiationProvider::class) ->decorate('api_platform.state_provider.main', null, 100) ->args([ service('api_platform.state_provider.content_negotiation.inner'), @@ -27,14 +33,14 @@ '%api_platform.error_formats%', ]); - $services->set('api_platform.state_provider.read', 'ApiPlatform\State\Provider\ReadProvider') + $services->set('api_platform.state_provider.read', ReadProvider::class) ->decorate('api_platform.state_provider.main', null, 500) ->args([ service('api_platform.state_provider.read.inner'), service('api_platform.serializer.context_builder'), ]); - $services->set('api_platform.state_provider.deserialize', 'ApiPlatform\State\Provider\DeserializeProvider') + $services->set('api_platform.state_provider.deserialize', DeserializeProvider::class) ->decorate('api_platform.state_provider.main', null, 300) ->args([ service('api_platform.state_provider.deserialize.inner'), @@ -43,7 +49,7 @@ service('translator')->nullOnInvalid(), ]); - $services->set('api_platform.error_listener', 'ApiPlatform\Symfony\EventListener\ErrorListener') + $services->set('api_platform.error_listener', ErrorListener::class) ->arg('$controller', 'api_platform.symfony.main_controller') ->arg('$logger', service('logger')->nullOnInvalid()) ->arg('$debug', '%kernel.debug%') @@ -55,7 +61,7 @@ ->arg('$resourceClassResolver', service('api_platform.resource_class_resolver')) ->arg('$negotiator', service('api_platform.negotiator')); - $services->set('api_platform.state_provider.parameter', 'ApiPlatform\State\Provider\ParameterProvider') + $services->set('api_platform.state_provider.parameter', ParameterProvider::class) ->decorate('api_platform.state_provider.main', null, 180) ->args([ service('api_platform.state_provider.parameter.inner'), diff --git a/src/Symfony/Bundle/Resources/config/state/security.php b/src/Symfony/Bundle/Resources/config/state/security.php index cccbca21c3..ca5df79545 100644 --- a/src/Symfony/Bundle/Resources/config/state/security.php +++ b/src/Symfony/Bundle/Resources/config/state/security.php @@ -13,17 +13,20 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; +use ApiPlatform\State\Provider\SecurityParameterProvider; +use ApiPlatform\Symfony\Security\State\AccessCheckerProvider; + return static function (ContainerConfigurator $container) { $services = $container->services(); - $services->set('api_platform.state_provider.access_checker', 'ApiPlatform\Symfony\Security\State\AccessCheckerProvider') + $services->set('api_platform.state_provider.access_checker', AccessCheckerProvider::class) ->decorate('api_platform.state_provider.read', null, 0) ->args([ service('api_platform.state_provider.access_checker.inner'), service('api_platform.security.resource_access_checker'), ]); - $services->set('api_platform.state_provider.access_checker.post_deserialize', 'ApiPlatform\Symfony\Security\State\AccessCheckerProvider') + $services->set('api_platform.state_provider.access_checker.post_deserialize', AccessCheckerProvider::class) ->decorate('api_platform.state_provider.deserialize', null, 0) ->args([ service('api_platform.state_provider.access_checker.post_deserialize.inner'), @@ -31,7 +34,7 @@ 'post_denormalize', ]); - $services->set('api_platform.state_provider.security_parameter', 'ApiPlatform\State\Provider\SecurityParameterProvider') + $services->set('api_platform.state_provider.security_parameter', SecurityParameterProvider::class) ->decorate('api_platform.state_provider.access_checker', null, 0) ->args([ service('api_platform.state_provider.security_parameter.inner'), diff --git a/src/Symfony/Bundle/Resources/config/state/security_validator.php b/src/Symfony/Bundle/Resources/config/state/security_validator.php index e7612aa367..1b51534865 100644 --- a/src/Symfony/Bundle/Resources/config/state/security_validator.php +++ b/src/Symfony/Bundle/Resources/config/state/security_validator.php @@ -13,10 +13,12 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; +use ApiPlatform\Symfony\Security\State\AccessCheckerProvider; + return static function (ContainerConfigurator $container) { $services = $container->services(); - $services->set('api_platform.state_provider.access_checker.post_validate', 'ApiPlatform\Symfony\Security\State\AccessCheckerProvider') + $services->set('api_platform.state_provider.access_checker.post_validate', AccessCheckerProvider::class) ->decorate('api_platform.state_provider.validate', null, 0) ->args([ service('api_platform.state_provider.access_checker.post_validate.inner'), diff --git a/src/Symfony/Bundle/Resources/config/state/state.php b/src/Symfony/Bundle/Resources/config/state/state.php index af2e6adea0..f3dd834d73 100644 --- a/src/Symfony/Bundle/Resources/config/state/state.php +++ b/src/Symfony/Bundle/Resources/config/state/state.php @@ -13,30 +13,40 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; +use ApiPlatform\State\CallableProcessor; +use ApiPlatform\State\CallableProvider; +use ApiPlatform\State\CreateProvider; +use ApiPlatform\State\ObjectProvider; +use ApiPlatform\State\Pagination\Pagination; +use ApiPlatform\State\Pagination\PaginationOptions; +use ApiPlatform\State\Provider\BackedEnumProvider; +use ApiPlatform\State\SerializerContextBuilderInterface; +use Symfony\Component\DependencyInjection\ServiceLocator; + return static function (ContainerConfigurator $container) { $services = $container->services(); - $services->set('api_platform.state_provider.locator', 'ApiPlatform\State\CallableProvider') + $services->set('api_platform.state_provider.locator', CallableProvider::class) ->args([tagged_locator('api_platform.state_provider', 'key')]); $services->alias('api_platform.state_provider', 'api_platform.state_provider.locator'); - $services->set('api_platform.state_processor.locator', 'ApiPlatform\State\CallableProcessor') + $services->set('api_platform.state_processor.locator', CallableProcessor::class) ->args([tagged_locator('api_platform.state_processor', 'key')]); - $services->set('api_platform.pagination', 'ApiPlatform\State\Pagination\Pagination') + $services->set('api_platform.pagination', Pagination::class) ->args([ '%api_platform.collection.pagination%', '%api_platform.graphql.collection.pagination%', ]); - $services->alias('ApiPlatform\State\Pagination\Pagination', 'api_platform.pagination'); + $services->alias(Pagination::class, 'api_platform.pagination'); - $services->set('api_platform.serializer_locator', 'Symfony\Component\DependencyInjection\ServiceLocator') + $services->set('api_platform.serializer_locator', ServiceLocator::class) ->args([['serializer' => service('api_platform.serializer')]]) ->tag('container.service_locator'); - $services->set('api_platform.pagination_options', 'ApiPlatform\State\Pagination\PaginationOptions') + $services->set('api_platform.pagination_options', PaginationOptions::class) ->args([ '%api_platform.collection.pagination.enabled%', '%api_platform.collection.pagination.page_parameter_name%', @@ -51,9 +61,9 @@ '%api_platform.collection.pagination.partial_parameter_name%', ]); - $services->alias('ApiPlatform\State\Pagination\PaginationOptions', 'api_platform.pagination_options'); + $services->alias(PaginationOptions::class, 'api_platform.pagination_options'); - $services->set('api_platform.state_provider.create', 'ApiPlatform\State\CreateProvider') + $services->set('api_platform.state_provider.create', CreateProvider::class) ->args([ service('api_platform.state_provider.locator'), service('api_platform.metadata.resource.metadata_collection_factory'), @@ -61,17 +71,17 @@ ->tag('api_platform.state_provider', ['key' => 'ApiPlatform\State\CreateProvider']) ->tag('api_platform.state_provider', ['key' => 'api_platform.state_provider.create']); - $services->alias('ApiPlatform\State\CreateProvider', 'api_platform.state_provider.create'); + $services->alias(CreateProvider::class, 'api_platform.state_provider.create'); - $services->set('api_platform.state_provider.object', 'ApiPlatform\State\ObjectProvider') + $services->set('api_platform.state_provider.object', ObjectProvider::class) ->tag('api_platform.state_provider', ['key' => 'ApiPlatform\State\ObjectProvider']) ->tag('api_platform.state_provider', ['key' => 'api_platform.state_provider.object']); - $services->alias('ApiPlatform\State\ObjectProvider', 'api_platform.state_provider.object'); + $services->alias(ObjectProvider::class, 'api_platform.state_provider.object'); - $services->alias('ApiPlatform\State\SerializerContextBuilderInterface', 'api_platform.serializer.context_builder'); + $services->alias(SerializerContextBuilderInterface::class, 'api_platform.serializer.context_builder'); - $services->set('api_platform.state_provider.backed_enum', 'ApiPlatform\State\Provider\BackedEnumProvider') + $services->set('api_platform.state_provider.backed_enum', BackedEnumProvider::class) ->tag('api_platform.state_provider', ['key' => 'ApiPlatform\State\Provider\BackedEnumProvider']) ->tag('api_platform.state_provider', ['key' => 'api_platform.state_provider.backed_enum']); }; diff --git a/src/Symfony/Bundle/Resources/config/state/swagger_ui.php b/src/Symfony/Bundle/Resources/config/state/swagger_ui.php index 480ea6dcdc..0ebb86e641 100644 --- a/src/Symfony/Bundle/Resources/config/state/swagger_ui.php +++ b/src/Symfony/Bundle/Resources/config/state/swagger_ui.php @@ -13,10 +13,12 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; +use ApiPlatform\Symfony\Bundle\SwaggerUi\SwaggerUiProvider; + return static function (ContainerConfigurator $container) { $services = $container->services(); - $services->set('api_platform.swagger_ui.provider', 'ApiPlatform\Symfony\Bundle\SwaggerUi\SwaggerUiProvider') + $services->set('api_platform.swagger_ui.provider', SwaggerUiProvider::class) ->decorate('api_platform.state_provider.read', null, 0) ->args([ service('api_platform.swagger_ui.provider.inner'), diff --git a/src/Symfony/Bundle/Resources/config/swagger_ui.php b/src/Symfony/Bundle/Resources/config/swagger_ui.php index 6c9883b0f8..4d4b756af6 100644 --- a/src/Symfony/Bundle/Resources/config/swagger_ui.php +++ b/src/Symfony/Bundle/Resources/config/swagger_ui.php @@ -13,10 +13,13 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; +use ApiPlatform\Symfony\Bundle\SwaggerUi\SwaggerUiContext; +use ApiPlatform\Symfony\Bundle\SwaggerUi\SwaggerUiProcessor; + return static function (ContainerConfigurator $container) { $services = $container->services(); - $services->set('api_platform.swagger_ui.context', 'ApiPlatform\Symfony\Bundle\SwaggerUi\SwaggerUiContext') + $services->set('api_platform.swagger_ui.context', SwaggerUiContext::class) ->args([ '%api_platform.enable_swagger_ui%', '%api_platform.show_webby%', @@ -27,7 +30,7 @@ '%api_platform.swagger_ui.extra_configuration%', ]); - $services->set('api_platform.swagger_ui.processor', 'ApiPlatform\Symfony\Bundle\SwaggerUi\SwaggerUiProcessor') + $services->set('api_platform.swagger_ui.processor', SwaggerUiProcessor::class) ->args([ service('twig')->nullOnInvalid(), service('router'), diff --git a/src/Symfony/Bundle/Resources/config/symfony/controller.php b/src/Symfony/Bundle/Resources/config/symfony/controller.php index 62a78fcbef..203afa6924 100644 --- a/src/Symfony/Bundle/Resources/config/symfony/controller.php +++ b/src/Symfony/Bundle/Resources/config/symfony/controller.php @@ -13,10 +13,14 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; +use ApiPlatform\Symfony\Action\DocumentationAction; +use ApiPlatform\Symfony\Action\EntrypointAction; +use ApiPlatform\Symfony\Controller\MainController; + return static function (ContainerConfigurator $container) { $services = $container->services(); - $services->set('api_platform.symfony.main_controller', 'ApiPlatform\Symfony\Controller\MainController') + $services->set('api_platform.symfony.main_controller', MainController::class) ->public() ->args([ service('api_platform.metadata.resource.metadata_collection_factory'), @@ -26,7 +30,7 @@ service('logger')->ignoreOnInvalid(), ]); - $services->set('api_platform.action.entrypoint', 'ApiPlatform\Symfony\Action\EntrypointAction') + $services->set('api_platform.action.entrypoint', EntrypointAction::class) ->public() ->args([ service('api_platform.metadata.resource.name_collection_factory'), @@ -35,7 +39,7 @@ '%api_platform.docs_formats%', ]); - $services->set('api_platform.action.documentation', 'ApiPlatform\Symfony\Action\DocumentationAction') + $services->set('api_platform.action.documentation', DocumentationAction::class) ->public() ->args([ service('api_platform.metadata.resource.name_collection_factory'), diff --git a/src/Symfony/Bundle/Resources/config/symfony/events.php b/src/Symfony/Bundle/Resources/config/symfony/events.php index 7104b42782..68dd0a3424 100644 --- a/src/Symfony/Bundle/Resources/config/symfony/events.php +++ b/src/Symfony/Bundle/Resources/config/symfony/events.php @@ -13,10 +13,29 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; +use ApiPlatform\State\Processor\AddLinkHeaderProcessor; +use ApiPlatform\State\Processor\RespondProcessor; +use ApiPlatform\State\Processor\SerializeProcessor; +use ApiPlatform\State\Processor\WriteProcessor; +use ApiPlatform\State\Provider\ContentNegotiationProvider; +use ApiPlatform\State\Provider\DeserializeProvider; +use ApiPlatform\State\Provider\ParameterProvider; +use ApiPlatform\State\Provider\ReadProvider; +use ApiPlatform\Symfony\Action\DocumentationAction; +use ApiPlatform\Symfony\Action\EntrypointAction; +use ApiPlatform\Symfony\Action\PlaceholderAction; +use ApiPlatform\Symfony\EventListener\AddFormatListener; +use ApiPlatform\Symfony\EventListener\DeserializeListener; +use ApiPlatform\Symfony\EventListener\ErrorListener; +use ApiPlatform\Symfony\EventListener\ReadListener; +use ApiPlatform\Symfony\EventListener\RespondListener; +use ApiPlatform\Symfony\EventListener\SerializeListener; +use ApiPlatform\Symfony\EventListener\WriteListener; + return static function (ContainerConfigurator $container) { $services = $container->services(); - $services->set('api_platform.state_provider.content_negotiation', 'ApiPlatform\State\Provider\ContentNegotiationProvider') + $services->set('api_platform.state_provider.content_negotiation', ContentNegotiationProvider::class) ->args([ null, service('api_platform.negotiator'), @@ -24,25 +43,25 @@ '%api_platform.error_formats%', ]); - $services->set('api_platform.listener.request.add_format', 'ApiPlatform\Symfony\EventListener\AddFormatListener') + $services->set('api_platform.listener.request.add_format', AddFormatListener::class) ->args([ service('api_platform.state_provider.content_negotiation'), service('api_platform.metadata.resource.metadata_collection_factory'), ]) ->tag('kernel.event_listener', ['event' => 'kernel.request', 'method' => 'onKernelRequest', 'priority' => 28]); - $services->set('api_platform.state_provider.read', 'ApiPlatform\State\Provider\ReadProvider') + $services->set('api_platform.state_provider.read', ReadProvider::class) ->arg(0, service('api_platform.state_provider.locator')) ->arg(1, service('api_platform.serializer.context_builder')) ->arg('$logger', service('logger')->nullOnInvalid()); - $services->set('api_platform.state_provider.parameter', 'ApiPlatform\State\Provider\ParameterProvider') + $services->set('api_platform.state_provider.parameter', ParameterProvider::class) ->args([ null, tagged_locator('api_platform.parameter_provider', 'key'), ]); - $services->set('api_platform.listener.request.read', 'ApiPlatform\Symfony\EventListener\ReadListener') + $services->set('api_platform.listener.request.read', ReadListener::class) ->args([ service('api_platform.state_provider.read'), service('api_platform.metadata.resource.metadata_collection_factory'), @@ -51,7 +70,7 @@ ]) ->tag('kernel.event_listener', ['event' => 'kernel.request', 'method' => 'onKernelRequest', 'priority' => 4]); - $services->set('api_platform.state_provider.deserialize', 'ApiPlatform\State\Provider\DeserializeProvider') + $services->set('api_platform.state_provider.deserialize', DeserializeProvider::class) ->args([ null, service('api_platform.serializer'), @@ -59,59 +78,59 @@ service('translator')->nullOnInvalid(), ]); - $services->set('api_platform.listener.request.deserialize', 'ApiPlatform\Symfony\EventListener\DeserializeListener') + $services->set('api_platform.listener.request.deserialize', DeserializeListener::class) ->args([ service('api_platform.state_provider.deserialize'), service('api_platform.metadata.resource.metadata_collection_factory'), ]) ->tag('kernel.event_listener', ['event' => 'kernel.request', 'method' => 'onKernelRequest', 'priority' => 2]); - $services->set('api_platform.state_processor.serialize', 'ApiPlatform\State\Processor\SerializeProcessor') + $services->set('api_platform.state_processor.serialize', SerializeProcessor::class) ->args([ null, service('api_platform.serializer'), service('api_platform.serializer.context_builder'), ]); - $services->set('api_platform.state_processor.write', 'ApiPlatform\State\Processor\WriteProcessor') + $services->set('api_platform.state_processor.write', WriteProcessor::class) ->args([ null, service('api_platform.state_processor.locator'), ]); - $services->set('api_platform.state_processor.respond', 'ApiPlatform\State\Processor\RespondProcessor') + $services->set('api_platform.state_processor.respond', RespondProcessor::class) ->args([ service('api_platform.iri_converter'), service('api_platform.resource_class_resolver'), service('api_platform.metadata.operation.metadata_factory'), ]); - $services->set('api_platform.state_processor.add_link_header', 'ApiPlatform\State\Processor\AddLinkHeaderProcessor') + $services->set('api_platform.state_processor.add_link_header', AddLinkHeaderProcessor::class) ->decorate('api_platform.state_processor.respond', null, 0) ->args([service('api_platform.state_processor.add_link_header.inner')]); - $services->set('api_platform.listener.view.write', 'ApiPlatform\Symfony\EventListener\WriteListener') + $services->set('api_platform.listener.view.write', WriteListener::class) ->args([ service('api_platform.state_processor.write'), service('api_platform.metadata.resource.metadata_collection_factory'), ]) ->tag('kernel.event_listener', ['event' => 'kernel.view', 'method' => 'onKernelView', 'priority' => 32]); - $services->set('api_platform.listener.view.serialize', 'ApiPlatform\Symfony\EventListener\SerializeListener') + $services->set('api_platform.listener.view.serialize', SerializeListener::class) ->args([ service('api_platform.state_processor.serialize'), service('api_platform.metadata.resource.metadata_collection_factory'), ]) ->tag('kernel.event_listener', ['event' => 'kernel.view', 'method' => 'onKernelView', 'priority' => 16]); - $services->set('api_platform.listener.view.respond', 'ApiPlatform\Symfony\EventListener\RespondListener') + $services->set('api_platform.listener.view.respond', RespondListener::class) ->args([ service('api_platform.state_processor.respond'), service('api_platform.metadata.resource.metadata_collection_factory'), ]) ->tag('kernel.event_listener', ['event' => 'kernel.view', 'method' => 'onKernelView', 'priority' => 8]); - $services->set('api_platform.error_listener', 'ApiPlatform\Symfony\EventListener\ErrorListener') + $services->set('api_platform.error_listener', ErrorListener::class) ->arg('$controller', 'api_platform.action.placeholder') ->arg('$logger', service('logger')->nullOnInvalid()) ->arg('$debug', '%kernel.debug%') @@ -125,7 +144,7 @@ $services->alias('api_platform.state_processor.documentation', 'api_platform.state_processor.respond'); - $services->set('api_platform.state_processor.documentation.serialize', 'ApiPlatform\State\Processor\SerializeProcessor') + $services->set('api_platform.state_processor.documentation.serialize', SerializeProcessor::class) ->decorate('api_platform.state_processor.documentation', null, 200) ->args([ service('api_platform.state_processor.documentation.serialize.inner'), @@ -133,7 +152,7 @@ service('api_platform.serializer.context_builder'), ]); - $services->set('api_platform.state_processor.documentation.write', 'ApiPlatform\State\Processor\WriteProcessor') + $services->set('api_platform.state_processor.documentation.write', WriteProcessor::class) ->decorate('api_platform.state_processor.documentation', null, 100) ->args([ service('api_platform.state_processor.documentation.write.inner'), @@ -142,7 +161,7 @@ $services->alias('api_platform.state_provider.documentation', 'api_platform.state_provider.locator'); - $services->set('api_platform.state_provider.documentation.content_negotiation', 'ApiPlatform\State\Provider\ContentNegotiationProvider') + $services->set('api_platform.state_provider.documentation.content_negotiation', ContentNegotiationProvider::class) ->decorate('api_platform.state_provider.documentation', null, 100) ->args([ service('api_platform.state_provider.documentation.content_negotiation.inner'), @@ -151,14 +170,14 @@ '%api_platform.error_formats%', ]); - $services->set('api_platform.state_provider.documentation.read', 'ApiPlatform\State\Provider\ReadProvider') + $services->set('api_platform.state_provider.documentation.read', ReadProvider::class) ->decorate('api_platform.state_provider.documentation', null, 500) ->args([ service('api_platform.state_provider.documentation.read.inner'), service('api_platform.serializer.context_builder'), ]); - $services->set('api_platform.action.entrypoint', 'ApiPlatform\Symfony\Action\EntrypointAction') + $services->set('api_platform.action.entrypoint', EntrypointAction::class) ->public() ->args([ service('api_platform.metadata.resource.name_collection_factory'), @@ -167,7 +186,7 @@ '%api_platform.docs_formats%', ]); - $services->set('api_platform.action.documentation', 'ApiPlatform\Symfony\Action\DocumentationAction') + $services->set('api_platform.action.documentation', DocumentationAction::class) ->public() ->args([ service('api_platform.metadata.resource.name_collection_factory'), @@ -184,10 +203,10 @@ '%api_platform.enable_re_doc%', ]); - $services->set('api_platform.action.placeholder', 'ApiPlatform\Symfony\Action\PlaceholderAction') + $services->set('api_platform.action.placeholder', PlaceholderAction::class) ->public(); - $services->alias('ApiPlatform\Symfony\Action\PlaceholderAction', 'api_platform.action.placeholder') + $services->alias(PlaceholderAction::class, 'api_platform.action.placeholder') ->public(); $services->alias('api_platform.action.get_collection', 'api_platform.action.placeholder') diff --git a/src/Symfony/Bundle/Resources/config/symfony/jsonld.php b/src/Symfony/Bundle/Resources/config/symfony/jsonld.php index 42f935bd52..1b96773c02 100644 --- a/src/Symfony/Bundle/Resources/config/symfony/jsonld.php +++ b/src/Symfony/Bundle/Resources/config/symfony/jsonld.php @@ -13,10 +13,12 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; +use ApiPlatform\JsonLd\Action\ContextAction; + return static function (ContainerConfigurator $container) { $services = $container->services(); - $services->set('api_platform.jsonld.action.context', 'ApiPlatform\JsonLd\Action\ContextAction') + $services->set('api_platform.jsonld.action.context', ContextAction::class) ->public() ->args([ service('api_platform.jsonld.context_builder'), diff --git a/src/Symfony/Bundle/Resources/config/symfony/swagger_ui.php b/src/Symfony/Bundle/Resources/config/symfony/swagger_ui.php index f346953155..a82f07a271 100644 --- a/src/Symfony/Bundle/Resources/config/symfony/swagger_ui.php +++ b/src/Symfony/Bundle/Resources/config/symfony/swagger_ui.php @@ -13,10 +13,12 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; +use ApiPlatform\Symfony\Bundle\SwaggerUi\SwaggerUiProvider; + return static function (ContainerConfigurator $container) { $services = $container->services(); - $services->set('api_platform.swagger_ui.documentation.provider', 'ApiPlatform\Symfony\Bundle\SwaggerUi\SwaggerUiProvider') + $services->set('api_platform.swagger_ui.documentation.provider', SwaggerUiProvider::class) ->decorate('api_platform.state_provider.documentation.read', null, 0) ->args([ service('api_platform.swagger_ui.documentation.provider.inner'), diff --git a/src/Symfony/Bundle/Resources/config/symfony/symfony.php b/src/Symfony/Bundle/Resources/config/symfony/symfony.php index 0e406d5f21..31b6c0f05d 100644 --- a/src/Symfony/Bundle/Resources/config/symfony/symfony.php +++ b/src/Symfony/Bundle/Resources/config/symfony/symfony.php @@ -13,10 +13,13 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; +use ApiPlatform\Symfony\Bundle\CacheWarmer\CachePoolClearerCacheWarmer; +use ApiPlatform\Symfony\EventListener\ExceptionListener; + return static function (ContainerConfigurator $container) { $services = $container->services(); - $services->set('api_platform.listener.exception', 'ApiPlatform\Symfony\EventListener\ExceptionListener') + $services->set('api_platform.listener.exception', ExceptionListener::class) ->args([ service('api_platform.error_listener')->nullOnInvalid(), '%api_platform.handle_symfony_errors%', @@ -24,7 +27,7 @@ ->tag('kernel.event_listener', ['event' => 'kernel.exception', 'method' => 'onKernelException', 'priority' => -96]) ->tag('monolog.logger', ['channel' => 'request']); - $services->set('api_platform.cache_warmer.cache_pool_clearer', 'ApiPlatform\Symfony\Bundle\CacheWarmer\CachePoolClearerCacheWarmer') + $services->set('api_platform.cache_warmer.cache_pool_clearer', CachePoolClearerCacheWarmer::class) ->args([ service('cache.system_clearer'), ['api_platform.cache.metadata.property', 'api_platform.cache.metadata.resource', 'api_platform.cache.metadata.resource_collection', 'api_platform.cache.route_name_resolver', 'api_platform.cache.identifiers_extractor', 'api_platform.elasticsearch.cache.metadata.document'], diff --git a/src/Symfony/Bundle/Resources/config/symfony/uid.php b/src/Symfony/Bundle/Resources/config/symfony/uid.php index 8d22b79e2a..d1b43ec755 100644 --- a/src/Symfony/Bundle/Resources/config/symfony/uid.php +++ b/src/Symfony/Bundle/Resources/config/symfony/uid.php @@ -13,12 +13,15 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; +use ApiPlatform\Symfony\UriVariableTransformer\UlidUriVariableTransformer; +use ApiPlatform\Symfony\UriVariableTransformer\UuidUriVariableTransformer; + return static function (ContainerConfigurator $container) { $services = $container->services(); - $services->set('api_platform.symfony.uri_variables.transformer.ulid', 'ApiPlatform\Symfony\UriVariableTransformer\UlidUriVariableTransformer') + $services->set('api_platform.symfony.uri_variables.transformer.ulid', UlidUriVariableTransformer::class) ->tag('api_platform.uri_variables.transformer'); - $services->set('api_platform.symfony.uri_variables.transformer.uuid', 'ApiPlatform\Symfony\UriVariableTransformer\UuidUriVariableTransformer') + $services->set('api_platform.symfony.uri_variables.transformer.uuid', UuidUriVariableTransformer::class) ->tag('api_platform.uri_variables.transformer'); }; diff --git a/src/Symfony/Bundle/Resources/config/validator/events.php b/src/Symfony/Bundle/Resources/config/validator/events.php index 44bd5db961..c2768a8c77 100644 --- a/src/Symfony/Bundle/Resources/config/validator/events.php +++ b/src/Symfony/Bundle/Resources/config/validator/events.php @@ -13,23 +13,27 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; +use ApiPlatform\Symfony\EventListener\ValidateListener; +use ApiPlatform\Symfony\Validator\State\ParameterValidatorProvider; +use ApiPlatform\Symfony\Validator\State\ValidateProvider; + return static function (ContainerConfigurator $container) { $services = $container->services(); - $services->set('api_platform.state_provider.validate', 'ApiPlatform\Symfony\Validator\State\ValidateProvider') + $services->set('api_platform.state_provider.validate', ValidateProvider::class) ->args([ null, service('api_platform.validator'), ]); - $services->set('api_platform.listener.view.validate', 'ApiPlatform\Symfony\EventListener\ValidateListener') + $services->set('api_platform.listener.view.validate', ValidateListener::class) ->args([ service('api_platform.state_provider.validate'), service('api_platform.metadata.resource.metadata_collection_factory'), ]) ->tag('kernel.event_listener', ['event' => 'kernel.view', 'method' => 'onKernelView', 'priority' => 64]); - $services->set('api_platform.state_provider.parameter_validator', 'ApiPlatform\Symfony\Validator\State\ParameterValidatorProvider') + $services->set('api_platform.state_provider.parameter_validator', ParameterValidatorProvider::class) ->public() ->decorate('api_platform.state_provider.read', null, 110) ->args([ diff --git a/src/Symfony/Bundle/Resources/config/validator/state.php b/src/Symfony/Bundle/Resources/config/validator/state.php index 22aabba6ca..30c31f43e5 100644 --- a/src/Symfony/Bundle/Resources/config/validator/state.php +++ b/src/Symfony/Bundle/Resources/config/validator/state.php @@ -13,17 +13,20 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; +use ApiPlatform\Symfony\Validator\State\ParameterValidatorProvider; +use ApiPlatform\Symfony\Validator\State\ValidateProvider; + return static function (ContainerConfigurator $container) { $services = $container->services(); - $services->set('api_platform.state_provider.validate', 'ApiPlatform\Symfony\Validator\State\ValidateProvider') + $services->set('api_platform.state_provider.validate', ValidateProvider::class) ->decorate('api_platform.state_provider.main', null, 200) ->args([ service('api_platform.state_provider.validate.inner'), service('api_platform.validator'), ]); - $services->set('api_platform.state_provider.parameter_validator', 'ApiPlatform\Symfony\Validator\State\ParameterValidatorProvider') + $services->set('api_platform.state_provider.parameter_validator', ParameterValidatorProvider::class) ->public() ->decorate('api_platform.state_provider.main', null, 191) ->args([ diff --git a/src/Symfony/Bundle/Resources/config/validator/validator.php b/src/Symfony/Bundle/Resources/config/validator/validator.php index df6b38e5fd..786221ea97 100644 --- a/src/Symfony/Bundle/Resources/config/validator/validator.php +++ b/src/Symfony/Bundle/Resources/config/validator/validator.php @@ -13,21 +13,26 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; +use ApiPlatform\Symfony\Validator\State\ErrorProvider; +use ApiPlatform\Symfony\Validator\Validator; +use ApiPlatform\Validator\Metadata\Resource\Factory\ParameterValidationResourceMetadataCollectionFactory; +use ApiPlatform\Validator\ValidatorInterface; + return static function (ContainerConfigurator $container) { $services = $container->services(); - $services->set('api_platform.validator', 'ApiPlatform\Symfony\Validator\Validator') + $services->set('api_platform.validator', Validator::class) ->args([ service('validator'), tagged_locator('api_platform.validation_groups_generator'), ]); - $services->alias('ApiPlatform\Validator\ValidatorInterface', 'api_platform.validator'); + $services->alias(ValidatorInterface::class, 'api_platform.validator'); - $services->set('api_platform.validator.state.error_provider', 'ApiPlatform\Symfony\Validator\State\ErrorProvider') + $services->set('api_platform.validator.state.error_provider', ErrorProvider::class) ->tag('api_platform.state_provider', ['key' => 'api_platform.validator.state.error_provider']); - $services->set('api_platform.validator.metadata.resource.metadata_collection_factory.parameter', 'ApiPlatform\Validator\Metadata\Resource\Factory\ParameterValidationResourceMetadataCollectionFactory') + $services->set('api_platform.validator.metadata.resource.metadata_collection_factory.parameter', ParameterValidationResourceMetadataCollectionFactory::class) ->decorate('api_platform.metadata.resource.metadata_collection_factory', null, 1000) ->args([ service('api_platform.validator.metadata.resource.metadata_collection_factory.parameter.inner'), diff --git a/tests/Fixer/SymfonyServiceClassConstantFixer.php b/tests/Fixer/SymfonyServiceClassConstantFixer.php new file mode 100644 index 0000000000..3d544075a1 --- /dev/null +++ b/tests/Fixer/SymfonyServiceClassConstantFixer.php @@ -0,0 +1,343 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +declare(strict_types=1); + +namespace ApiPlatform\Tests\Fixer; + +use PhpCsFixer\AbstractFixer; +use PhpCsFixer\FixerDefinition\CodeSample; +use PhpCsFixer\FixerDefinition\FixerDefinition; +use PhpCsFixer\FixerDefinition\FixerDefinitionInterface; +use PhpCsFixer\Tokenizer\Analyzer\NamespaceUsesAnalyzer; +use PhpCsFixer\Tokenizer\Token; +use PhpCsFixer\Tokenizer\Tokens; + +final class SymfonyServiceClassConstantFixer extends AbstractFixer +{ + public function getDefinition(): FixerDefinitionInterface + { + return new FixerDefinition( + 'Converts fully qualified class names in Symfony service definitions to ::class constants and adds import statements.', + [ + new CodeSample( + "services();\n \$services->set('my_service', 'App\\Service\\MyService');\n};\n" + ), + ] + ); + } + + /** + * {@inheritdoc} + */ + public function getName(): string + { + return 'ApiPlatform/symfony_service_class_constant'; + } + + public function isCandidate(Tokens $tokens): bool + { + return $tokens->isTokenKindFound(\T_OBJECT_OPERATOR) && $tokens->isTokenKindFound(\T_CONSTANT_ENCAPSED_STRING); + } + + protected function applyFix(\SplFileInfo $file, Tokens $tokens): void + { + $useDeclarations = (new NamespaceUsesAnalyzer())->getDeclarationsFromTokens($tokens); + $existingImports = []; + foreach ($useDeclarations as $useDeclaration) { + $existingImports[$useDeclaration->getShortName()] = $useDeclaration->getFullName(); + } + + $newImports = []; + + for ($index = $tokens->count() - 1; $index >= 0; --$index) { + $token = $tokens[$index]; + + if (!$token->isGivenKind(\T_CONSTANT_ENCAPSED_STRING)) { + continue; + } + + $content = trim($token->getContent(), "'\""); + if (!str_contains($content, '\\')) { + continue; + } + + // Check for ->set() + if ($this->isSetCall($tokens, $index)) { + $this->replaceWithClassConstant($tokens, $index, $content, $existingImports, $newImports); + continue; + } + + // Check for inline_service() + if ($this->isInlineServiceCall($tokens, $index)) { + $this->replaceWithClassConstant($tokens, $index, $content, $existingImports, $newImports); + continue; + } + + // Check for alias() + if ($this->isAliasCall($tokens, $index)) { + $this->replaceWithClassConstant($tokens, $index, $content, $existingImports, $newImports); + continue; + } + } + + if (!empty($newImports)) { + $this->insertImports($tokens, $newImports); + } + } + + // Helper to check if the current token is part of a ->set() call + private function isSetCall(Tokens $tokens, int $index): bool + { + $prevIndex = $tokens->getPrevMeaningfulToken($index); + if (!$tokens[$prevIndex]->equals(',')) { + return false; + } + + $firstArgIndex = $tokens->getPrevMeaningfulToken($prevIndex); + if (!$tokens[$firstArgIndex]->isGivenKind(\T_CONSTANT_ENCAPSED_STRING)) { + return false; + } + + $parenIndex = $tokens->getPrevMeaningfulToken($firstArgIndex); + if (!$tokens[$parenIndex]->equals('(')) { + return false; + } + + $setMethodIndex = $tokens->getPrevMeaningfulToken($parenIndex); + $setMethodToken = $tokens[$setMethodIndex]; + if (!$setMethodToken->isGivenKind(\T_STRING) || 'set' !== strtolower($setMethodToken->getContent())) { + return false; + } + + $arrowIndex = $tokens->getPrevMeaningfulToken($setMethodIndex); + if (!$tokens[$arrowIndex]->isGivenKind(\T_OBJECT_OPERATOR)) { + return false; + } + + return true; + } + + // Helper to check if the current token is part of an inline_service() call + private function isInlineServiceCall(Tokens $tokens, int $index): bool + { + $prevIndex = $tokens->getPrevMeaningfulToken($index); + if (!$tokens[$prevIndex]->equals('(')) { + return false; + } + + $functionIndex = $tokens->getPrevMeaningfulToken($prevIndex); + if (!$tokens[$functionIndex]->isGivenKind(\T_STRING) || 'inline_service' !== $tokens[$functionIndex]->getContent()) { + return false; + } + + return true; + } + + // Helper to check if the current token is part of an alias() call + private function isAliasCall(Tokens $tokens, int $index): bool + { + // Check if the current token is a string (potential FQCN) + if (!$tokens[$index]->isGivenKind(\T_CONSTANT_ENCAPSED_STRING)) { + return false; + } + + // Check if the previous meaningful token is an opening parenthesis + $prevIndex = $tokens->getPrevMeaningfulToken($index); + if (!$tokens[$prevIndex]->equals('(')) { + return false; + } + + // Check if the token before the parenthesis is the 'alias' method + $aliasMethodIndex = $tokens->getPrevMeaningfulToken($prevIndex); + if (!$tokens[$aliasMethodIndex]->isGivenKind(\T_STRING) || 'alias' !== $tokens[$aliasMethodIndex]->getContent()) { + return false; + } + + // Check if the token before 'alias' is the object operator (->) + $arrowIndex = $tokens->getPrevMeaningfulToken($aliasMethodIndex); + if (!$tokens[$arrowIndex]->isGivenKind(\T_OBJECT_OPERATOR)) { + return false; + } + + return true; + } + + private function replaceWithClassConstant( + Tokens $tokens, + int $index, + string $content, + array $existingImports, + array &$newImports, + ): void { + $fqcn = ltrim($content, '\\'); + $shortName = $this->getShortName($fqcn); + + $replacementName = $fqcn; + $needsImport = false; + $alias = null; + + // Check for naming conflicts + if (isset($existingImports[$shortName]) && $existingImports[$shortName] !== $fqcn) { + $alias = $this->generateAlias($fqcn, $existingImports, $newImports); + $replacementName = $alias; + $needsImport = true; + $newImports[$alias] = $fqcn; + } elseif (isset($newImports[$shortName]) && $newImports[$shortName] !== $fqcn) { + $alias = $this->generateAlias($fqcn, $existingImports, $newImports); + $replacementName = $alias; + $needsImport = true; + $newImports[$alias] = $fqcn; + } elseif (!isset($existingImports[$shortName]) && !isset($newImports[$shortName])) { + $replacementName = $shortName; + $needsImport = true; + $newImports[$shortName] = $fqcn; + } else { + $replacementName = $shortName; + } + + $nameTokens = $this->generateTokensForName($replacementName); + $tokens[$index] = array_shift($nameTokens); + $toInsert = $nameTokens; + $toInsert[] = new Token([\T_DOUBLE_COLON, '::']); + $toInsert[] = new Token([\T_STRING, 'class']); + $tokens->insertAt($index + 1, $toInsert); + } + + private function generateAlias(string $fqcn, array $existingImports, array $newImports): string + { + $parts = explode('\\', $fqcn); + $shortName = end($parts); + + // Extract the parent namespace for aliasing + $parentNamespace = $parts[\count($parts) - 2]; + + // Use the parent namespace as a prefix for the alias + $alias = $parentNamespace.$shortName; + + // Ensure the alias is unique + $i = 1; + while (isset($existingImports[$alias]) || isset($newImports[$alias])) { + $alias = $parentNamespace.$shortName.$i; + ++$i; + } + + return $alias; + } + + private function getShortName(string $fqcn): string + { + $parts = explode('\\', $fqcn); + + return end($parts); + } + + /** + * Generates a list of tokens for a given class name, properly splitting namespaces. + */ + private function generateTokensForName(string $name): array + { + $tokens = []; + $parts = explode('\\', $name); + foreach ($parts as $i => $part) { + if ($i > 0) { + $tokens[] = new Token([\T_NS_SEPARATOR, '\\']); + } + $tokens[] = new Token([\T_STRING, $part]); + } + + return $tokens; + } + + /** + * Inserts use statements safely into the tokens collection. + */ + private function insertImports(Tokens $tokens, array $imports): void + { + if (empty($imports)) { + return; + } + + asort($imports); + + $insertIndex = 0; + + // Find the correct position to insert the use statements + foreach ($tokens as $index => $token) { + if ($token->isGivenKind(\T_DECLARE)) { + $semicolon = $tokens->getNextTokenOfKind($index, [';']); + if (null !== $semicolon) { + $insertIndex = $semicolon; + } + break; + } + if ($token->isGivenKind([\T_NAMESPACE, \T_USE, \T_CLASS, \T_FUNCTION, \T_RETURN])) { + break; + } + } + + $namespaceIndex = $tokens->getNextTokenOfKind($insertIndex, [[\T_NAMESPACE]]); + if (null !== $namespaceIndex) { + $semicolon = $tokens->getNextTokenOfKind($namespaceIndex, [';']); + if (null !== $semicolon) { + $insertIndex = $semicolon; + } + } + + $scanIndex = $insertIndex; + $maxIndex = $tokens->count(); + + while ($scanIndex < $maxIndex) { + $token = $tokens[$scanIndex]; + if ($token->isGivenKind([\T_CLASS, \T_FUNCTION, \T_RETURN])) { + break; + } + if ($token->isGivenKind(\T_USE)) { + $next = $tokens->getNextMeaningfulToken($scanIndex); + if ($tokens[$next]->equals('(')) { + ++$scanIndex; + continue; + } + $semicolon = $tokens->getNextTokenOfKind($scanIndex, [';']); + if (null !== $semicolon) { + $insertIndex = $semicolon; + $scanIndex = $semicolon; + } + } + ++$scanIndex; + } + + $tokensToInsert = []; + $tokensToInsert[] = new Token([\T_WHITESPACE, "\n"]); + + foreach ($imports as $alias => $fqcn) { + $tokensToInsert[] = new Token([\T_USE, 'use']); + $tokensToInsert[] = new Token([\T_WHITESPACE, ' ']); + + $nameTokens = $this->generateTokensForName($fqcn); + foreach ($nameTokens as $t) { + $tokensToInsert[] = $t; + } + + if ($alias !== $this->getShortName($fqcn)) { + $tokensToInsert[] = new Token([\T_WHITESPACE, ' ']); + $tokensToInsert[] = new Token([\T_AS, 'as']); + $tokensToInsert[] = new Token([\T_WHITESPACE, ' ']); + $tokensToInsert[] = new Token([\T_STRING, $alias]); + } + + $tokensToInsert[] = new Token(';'); + $tokensToInsert[] = new Token([\T_WHITESPACE, "\n"]); + } + + $tokens->insertAt($insertIndex + 1, $tokensToInsert); + } +}