diff --git a/UPGRADE-5.1.md b/UPGRADE-5.1.md index 96c1c8b0e2d90..bb8eda0b7e470 100644 --- a/UPGRADE-5.1.md +++ b/UPGRADE-5.1.md @@ -39,6 +39,11 @@ HttpFoundation `__construct()` instead) * Made the Mime component an optional dependency +HttpKernel +---------- + + * Deprecated support for `service:action` syntax to reference controllers. Use `serviceOrFqcn::method` instead. + Mailer ------ diff --git a/UPGRADE-6.0.md b/UPGRADE-6.0.md index 4180954165f54..08b811e1ecd57 100644 --- a/UPGRADE-6.0.md +++ b/UPGRADE-6.0.md @@ -36,6 +36,11 @@ HttpFoundation `RedirectResponse::create()`, and `StreamedResponse::create()` methods (use `__construct()` instead) +HttpKernel +---------- + + * Removed support for `service:action` syntax to reference controllers. Use `serviceOrFqcn::method` instead. + Messenger --------- diff --git a/src/Symfony/Bundle/WebProfilerBundle/Tests/Controller/ProfilerControllerTest.php b/src/Symfony/Bundle/WebProfilerBundle/Tests/Controller/ProfilerControllerTest.php index d5479ecefc168..d9ece4216d5b8 100644 --- a/src/Symfony/Bundle/WebProfilerBundle/Tests/Controller/ProfilerControllerTest.php +++ b/src/Symfony/Bundle/WebProfilerBundle/Tests/Controller/ProfilerControllerTest.php @@ -71,7 +71,7 @@ public function testPanelActionWithLatestToken() $client->request('GET', '/'); $client->request('GET', '/_profiler/latest'); - $this->assertStringContainsString('kernel:homepageController', $client->getResponse()->getContent()); + $this->assertStringContainsString('kernel::homepageController', $client->getResponse()->getContent()); } public function testPanelActionWithoutValidToken() diff --git a/src/Symfony/Bundle/WebProfilerBundle/Tests/Functional/WebProfilerBundleKernel.php b/src/Symfony/Bundle/WebProfilerBundle/Tests/Functional/WebProfilerBundleKernel.php index 76c224d0777fe..df3054bdea06d 100644 --- a/src/Symfony/Bundle/WebProfilerBundle/Tests/Functional/WebProfilerBundleKernel.php +++ b/src/Symfony/Bundle/WebProfilerBundle/Tests/Functional/WebProfilerBundleKernel.php @@ -34,7 +34,7 @@ protected function configureRoutes(RoutingConfigurator $routes) { $routes->import(__DIR__.'/../../Resources/config/routing/profiler.xml')->prefix('/_profiler'); $routes->import(__DIR__.'/../../Resources/config/routing/wdt.xml')->prefix('/_wdt'); - $routes->add('_', '/')->controller('kernel:homepageController'); + $routes->add('_', '/')->controller('kernel::homepageController'); } protected function configureContainer(ContainerBuilder $containerBuilder, LoaderInterface $loader) diff --git a/src/Symfony/Component/HttpKernel/CHANGELOG.md b/src/Symfony/Component/HttpKernel/CHANGELOG.md index ada9fafe60102..fbffdce68c5a7 100644 --- a/src/Symfony/Component/HttpKernel/CHANGELOG.md +++ b/src/Symfony/Component/HttpKernel/CHANGELOG.md @@ -4,6 +4,7 @@ CHANGELOG 5.1.0 ----- + * deprecated support for `service:action` syntax to reference controllers, use `serviceOrFqcn::method` instead * allowed using public aliases to reference controllers * added session usage reporting when the `_stateless` attribute of the request is set to `true` @@ -11,8 +12,8 @@ CHANGELOG ----- * removed support for getting the container from a non-booted kernel - * removed the first and second constructor argument of `ConfigDataCollector` - * removed `ConfigDataCollector::getApplicationName()` + * removed the first and second constructor argument of `ConfigDataCollector` + * removed `ConfigDataCollector::getApplicationName()` * removed `ConfigDataCollector::getApplicationVersion()` * removed support for `Symfony\Component\Templating\EngineInterface` in `HIncludeFragmentRenderer`, use a `Twig\Environment` only * removed `TranslatorListener` in favor of `LocaleAwareListener` @@ -24,7 +25,7 @@ CHANGELOG * removed `GetResponseForControllerResultEvent`, use `ViewEvent` instead * removed `GetResponseForExceptionEvent`, use `ExceptionEvent` instead * removed `PostResponseEvent`, use `TerminateEvent` instead - * removed `SaveSessionListener` in favor of `AbstractSessionListener` + * removed `SaveSessionListener` in favor of `AbstractSessionListener` * removed `Client`, use `HttpKernelBrowser` instead * added method `getProjectDir()` to `KernelInterface` * removed methods `serialize` and `unserialize` from `DataCollector`, store the serialized state in the data property instead diff --git a/src/Symfony/Component/HttpKernel/Controller/ContainerControllerResolver.php b/src/Symfony/Component/HttpKernel/Controller/ContainerControllerResolver.php index 6e4ae20c34ce8..3b9468465c52c 100644 --- a/src/Symfony/Component/HttpKernel/Controller/ContainerControllerResolver.php +++ b/src/Symfony/Component/HttpKernel/Controller/ContainerControllerResolver.php @@ -16,7 +16,7 @@ use Symfony\Component\DependencyInjection\Container; /** - * A controller resolver searching for a controller in a psr-11 container when using the "service:method" notation. + * A controller resolver searching for a controller in a psr-11 container when using the "service::method" notation. * * @author Fabien Potencier * @author Maxime Steinhausser @@ -36,7 +36,7 @@ protected function createController(string $controller) { if (1 === substr_count($controller, ':')) { $controller = str_replace(':', '::', $controller); - // TODO deprecate this in 5.1 + trigger_deprecation('symfony/http-kernel', '5.1', 'Referencing controllers with a single colon is deprecated. Use "%s" instead.', $controller); } return parent::createController($controller); diff --git a/src/Symfony/Component/HttpKernel/Tests/Controller/ContainerControllerResolverTest.php b/src/Symfony/Component/HttpKernel/Tests/Controller/ContainerControllerResolverTest.php index c39dac3ca59d8..85dd5fb67175d 100644 --- a/src/Symfony/Component/HttpKernel/Tests/Controller/ContainerControllerResolverTest.php +++ b/src/Symfony/Component/HttpKernel/Tests/Controller/ContainerControllerResolverTest.php @@ -19,6 +19,10 @@ class ContainerControllerResolverTest extends ControllerResolverTest { + /** + * @group legacy + * @expectedDeprecation Since symfony/http-kernel 5.1: Referencing controllers with a single colon is deprecated. Use "foo::action" instead. + */ public function testGetControllerServiceWithSingleColon() { $service = new ControllerTestService('foo'); @@ -145,7 +149,6 @@ public function getControllers() { return [ ['\\'.ControllerTestService::class.'::action'], - ['\\'.ControllerTestService::class.':action'], ]; } diff --git a/src/Symfony/Component/HttpKernel/composer.json b/src/Symfony/Component/HttpKernel/composer.json index e60792f689190..ec5ea1277cd24 100644 --- a/src/Symfony/Component/HttpKernel/composer.json +++ b/src/Symfony/Component/HttpKernel/composer.json @@ -17,6 +17,7 @@ ], "require": { "php": "^7.2.5", + "symfony/deprecation-contracts": "^2.1", "symfony/error-handler": "^4.4|^5.0", "symfony/event-dispatcher": "^5.0", "symfony/http-foundation": "^4.4|^5.0",