Skip to content

Commit f95f17a

Browse files
Merge branch '6.4' into 7.0
* 6.4: [FrameworkBundle][Routing] Deprecate annotations [FrameworkBundle][Serializer] Deprecate annotations
2 parents 71c03a8 + f0360f2 commit f95f17a

File tree

8 files changed

+39
-19
lines changed

8 files changed

+39
-19
lines changed

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,10 @@ CHANGELOG
5858
* Change `framework.asset_mapper.importmap_polyfill` from a URL to the name of an item in the importmap
5959
* Provide `$buildDir` when running `CacheWarmer` to build read-only resources
6060
* Add the global `--profile` option to the console to enable profiling commands
61+
* Deprecate the `routing.loader.annotation` service, use the `routing.loader.attribute` service instead
62+
* Deprecate the `routing.loader.annotation.directory` service, use the `routing.loader.attribute.directory` service instead
63+
* Deprecate the `routing.loader.annotation.file` service, use the `routing.loader.attribute.file` service instead
64+
* Deprecate `AnnotatedRouteControllerLoader`, use `AttributeRouteControllerLoader` instead
6165

6266
6.3
6367
---

DependencyInjection/FrameworkExtension.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,7 @@
151151
use Symfony\Component\Semaphore\Store\StoreFactory as SemaphoreStoreFactory;
152152
use Symfony\Component\Serializer\Encoder\DecoderInterface;
153153
use Symfony\Component\Serializer\Encoder\EncoderInterface;
154-
use Symfony\Component\Serializer\Mapping\Loader\AnnotationLoader;
154+
use Symfony\Component\Serializer\Mapping\Loader\AttributeLoader;
155155
use Symfony\Component\Serializer\Mapping\Loader\XmlFileLoader;
156156
use Symfony\Component\Serializer\Mapping\Loader\YamlFileLoader;
157157
use Symfony\Component\Serializer\Normalizer\DenormalizerInterface;
@@ -1858,7 +1858,7 @@ private function registerSerializerConfiguration(array $config, ContainerBuilder
18581858

18591859
$serializerLoaders = [];
18601860
if (isset($config['enable_attributes']) && $config['enable_attributes']) {
1861-
$annotationLoader = new Definition(AnnotationLoader::class);
1861+
$annotationLoader = new Definition(AttributeLoader::class);
18621862

18631863
$serializerLoaders[] = $annotationLoader;
18641864
}

Kernel/MicroKernelTrait.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ private function configureRoutes(RoutingConfigurator $routes): void
8585
}
8686

8787
if (false !== ($fileName = (new \ReflectionObject($this))->getFileName())) {
88-
$routes->import($fileName, 'annotation');
88+
$routes->import($fileName, 'attribute');
8989
}
9090
}
9191

Resources/config/routing.php

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
use Symfony\Bundle\FrameworkBundle\CacheWarmer\RouterCacheWarmer;
1616
use Symfony\Bundle\FrameworkBundle\Controller\RedirectController;
1717
use Symfony\Bundle\FrameworkBundle\Controller\TemplateController;
18-
use Symfony\Bundle\FrameworkBundle\Routing\AnnotatedRouteControllerLoader;
18+
use Symfony\Bundle\FrameworkBundle\Routing\AttributeRouteControllerLoader;
1919
use Symfony\Bundle\FrameworkBundle\Routing\DelegatingLoader;
2020
use Symfony\Bundle\FrameworkBundle\Routing\RedirectableCompiledUrlMatcher;
2121
use Symfony\Bundle\FrameworkBundle\Routing\Router;
@@ -24,8 +24,8 @@
2424
use Symfony\Component\Routing\Generator\CompiledUrlGenerator;
2525
use Symfony\Component\Routing\Generator\Dumper\CompiledUrlGeneratorDumper;
2626
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
27-
use Symfony\Component\Routing\Loader\AnnotationDirectoryLoader;
28-
use Symfony\Component\Routing\Loader\AnnotationFileLoader;
27+
use Symfony\Component\Routing\Loader\AttributeDirectoryLoader;
28+
use Symfony\Component\Routing\Loader\AttributeFileLoader;
2929
use Symfony\Component\Routing\Loader\ContainerLoader;
3030
use Symfony\Component\Routing\Loader\DirectoryLoader;
3131
use Symfony\Component\Routing\Loader\GlobFileLoader;
@@ -92,26 +92,35 @@
9292
])
9393
->tag('routing.loader')
9494

95-
->set('routing.loader.annotation', AnnotatedRouteControllerLoader::class)
95+
->set('routing.loader.attribute', AttributeRouteControllerLoader::class)
9696
->args([
9797
'%kernel.environment%',
9898
])
9999
->tag('routing.loader', ['priority' => -10])
100100

101-
->set('routing.loader.annotation.directory', AnnotationDirectoryLoader::class)
101+
->alias('routing.loader.annotation', 'routing.loader.attribute')
102+
->deprecate('symfony/routing', '6.4', 'The "%alias_id%" service is deprecated, use the "routing.loader.attribute" service instead.')
103+
104+
->set('routing.loader.attribute.directory', AttributeDirectoryLoader::class)
102105
->args([
103106
service('file_locator'),
104-
service('routing.loader.annotation'),
107+
service('routing.loader.attribute'),
105108
])
106109
->tag('routing.loader', ['priority' => -10])
107110

108-
->set('routing.loader.annotation.file', AnnotationFileLoader::class)
111+
->alias('routing.loader.annotation.directory', 'routing.loader.attribute.directory')
112+
->deprecate('symfony/routing', '6.4', 'The "%alias_id%" service is deprecated, use the "routing.loader.attribute.directory" service instead.')
113+
114+
->set('routing.loader.attribute.file', AttributeFileLoader::class)
109115
->args([
110116
service('file_locator'),
111-
service('routing.loader.annotation'),
117+
service('routing.loader.attribute'),
112118
])
113119
->tag('routing.loader', ['priority' => -10])
114120

121+
->alias('routing.loader.annotation.file', 'routing.loader.attribute.file')
122+
->deprecate('symfony/routing', '6.4', 'The "%alias_id%" service is deprecated, use the "routing.loader.attribute.file" service instead.')
123+
115124
->set('routing.loader.psr4', Psr4DirectoryLoader::class)
116125
->args([
117126
service('file_locator'),

Routing/AnnotatedRouteControllerLoader.php renamed to Routing/AttributeRouteControllerLoader.php

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,21 +11,24 @@
1111

1212
namespace Symfony\Bundle\FrameworkBundle\Routing;
1313

14-
use Symfony\Component\Routing\Loader\AnnotationClassLoader;
14+
use Symfony\Component\Routing\Loader\AttributeClassLoader;
1515
use Symfony\Component\Routing\Route;
1616

1717
/**
18-
* AnnotatedRouteControllerLoader is an implementation of AnnotationClassLoader
18+
* AttributeRouteControllerLoader is an implementation of AttributeClassLoader
1919
* that sets the '_controller' default based on the class and method names.
2020
*
2121
* @author Fabien Potencier <[email protected]>
22+
* @author Alexandre Daubois <[email protected]>
2223
*/
23-
class AnnotatedRouteControllerLoader extends AnnotationClassLoader
24+
class AttributeRouteControllerLoader extends AttributeClassLoader
2425
{
2526
/**
2627
* Configures the _controller default parameter of a given Route instance.
28+
*
29+
* @return void
2730
*/
28-
protected function configureRoute(Route $route, \ReflectionClass $class, \ReflectionMethod $method, object $annot): void
31+
protected function configureRoute(Route $route, \ReflectionClass $class, \ReflectionMethod $method, object $annot)
2932
{
3033
if ('__invoke' === $method->getName()) {
3134
$route->setDefault('_controller', $class->getName());
@@ -48,3 +51,7 @@ protected function getDefaultRouteName(\ReflectionClass $class, \ReflectionMetho
4851
return str_replace('__', '_', $name);
4952
}
5053
}
54+
55+
if (!class_exists(AnnotatedRouteControllerLoader::class, false)) {
56+
class_alias(AttributeRouteControllerLoader::class, AnnotatedRouteControllerLoader::class);
57+
}

Tests/DependencyInjection/FrameworkExtensionTestCase.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@
6363
use Symfony\Component\Notifier\TexterInterface;
6464
use Symfony\Component\PropertyAccess\PropertyAccessor;
6565
use Symfony\Component\Security\Core\AuthenticationEvents;
66-
use Symfony\Component\Serializer\Mapping\Loader\AnnotationLoader;
66+
use Symfony\Component\Serializer\Mapping\Loader\AttributeLoader;
6767
use Symfony\Component\Serializer\Mapping\Loader\XmlFileLoader;
6868
use Symfony\Component\Serializer\Mapping\Loader\YamlFileLoader;
6969
use Symfony\Component\Serializer\Normalizer\ConstraintViolationListNormalizer;
@@ -1425,7 +1425,7 @@ public function testSerializerEnabled()
14251425
$argument = $container->getDefinition('serializer.mapping.chain_loader')->getArgument(0);
14261426

14271427
$this->assertCount(2, $argument);
1428-
$this->assertEquals(AnnotationLoader::class, $argument[0]->getClass());
1428+
$this->assertEquals(AttributeLoader::class, $argument[0]->getClass());
14291429
$this->assertEquals(new Reference('serializer.name_converter.camel_case_to_snake_case'), $container->getDefinition('serializer.name_converter.metadata_aware')->getArgument(1));
14301430
$this->assertEquals(new Reference('property_info', ContainerBuilder::IGNORE_ON_INVALID_REFERENCE), $container->getDefinition('serializer.normalizer.object')->getArgument(3));
14311431
$this->assertArrayHasKey('circular_reference_handler', $container->getDefinition('serializer.normalizer.object')->getArgument(6));

Tests/Functional/Bundle/TestBundle/Resources/config/routing.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ http_client_call:
6767

6868
uid:
6969
resource: "../../Controller/UidController.php"
70-
type: "annotation"
70+
type: "attribute"
7171

7272
send_notification:
7373
path: /send_notification
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
_routingconditionservice_bundle:
22
prefix: /
33
resource: "@RoutingConditionServiceBundle/Controller"
4-
type: annotation
4+
type: attribute

0 commit comments

Comments
 (0)