Skip to content

Commit 4ba93f2

Browse files
committed
[FrameworkBundle] remove deprecater controller a:b:c notation
1 parent 87e84ac commit 4ba93f2

File tree

11 files changed

+16
-642
lines changed

11 files changed

+16
-642
lines changed

UPGRADE-5.0.md

+1
Original file line numberDiff line numberDiff line change
@@ -220,6 +220,7 @@ FrameworkBundle
220220
* Support for the legacy directory structure in `translation:update` and `debug:translation` commands has been removed.
221221
* Removed the "Psr\SimpleCache\CacheInterface" / "cache.app.simple" service, use "Symfony\Contracts\Cache\CacheInterface" / "cache.app" instead.
222222
* Removed support for `templating` engine in `TemplateController`, use Twig instead
223+
* Removed `ResolveControllerNameSubscriber`.
223224

224225
HttpClient
225226
----------

src/Symfony/Bundle/FrameworkBundle/CHANGELOG.md

+3
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,9 @@ CHANGELOG
55
-----
66

77
* Removed support to load translation resources from the legacy directories `src/Resources/translations/` and `src/Resources/<BundleName>/translations/`
8+
* Removed `ControllerNameParser`.
9+
* Removed `ResolveControllerNameSubscriber`
10+
* Removed support for `bundle:controller:action` to reference controllers. Use `serviceOrFqcn::method` instead
811
* Removed support for PHP templating, use Twig instead
912

1013
4.4.0

src/Symfony/Bundle/FrameworkBundle/Controller/ControllerNameParser.php

-146
This file was deleted.

src/Symfony/Bundle/FrameworkBundle/Controller/ControllerResolver.php

+1-44
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,7 @@
1111

1212
namespace Symfony\Bundle\FrameworkBundle\Controller;
1313

14-
use Psr\Log\LoggerInterface;
1514
use Symfony\Component\DependencyInjection\ContainerAwareInterface;
16-
use Symfony\Component\DependencyInjection\ContainerInterface;
1715
use Symfony\Component\HttpKernel\Controller\ContainerControllerResolver;
1816

1917
/**
@@ -23,45 +21,6 @@
2321
*/
2422
class ControllerResolver extends ContainerControllerResolver
2523
{
26-
/**
27-
* @deprecated since Symfony 4.4
28-
*/
29-
protected $parser;
30-
31-
/**
32-
* @param LoggerInterface|null $logger
33-
*/
34-
public function __construct(ContainerInterface $container, $logger = null)
35-
{
36-
if ($logger instanceof ControllerNameParser) {
37-
@trigger_error(sprintf('Passing a "%s" instance as 2nd argument to "%s()" is deprecated since Symfony 4.4, pass a "%s" instance or null instead.', ControllerNameParser::class, __METHOD__, LoggerInterface::class), E_USER_DEPRECATED);
38-
$this->parser = $logger;
39-
$logger = 2 < \func_num_args() ? func_get_arg(2) : null;
40-
} elseif (2 < \func_num_args() && func_get_arg(2) instanceof ControllerNameParser) {
41-
$this->parser = func_get_arg(2);
42-
} elseif ($logger && !$logger instanceof LoggerInterface) {
43-
throw new \TypeError(sprintf('Argument 2 of "%s()" must be an instance of "%s" or null, "%s" given.', __METHOD__, LoggerInterface::class, \is_object($logger) ? \get_class($logger) : \gettype($logger)), E_USER_DEPRECATED);
44-
}
45-
46-
parent::__construct($container, $logger);
47-
}
48-
49-
/**
50-
* {@inheritdoc}
51-
*/
52-
protected function createController($controller)
53-
{
54-
if ($this->parser && false === strpos($controller, '::') && 2 === substr_count($controller, ':')) {
55-
// controller in the a:b:c notation then
56-
$deprecatedNotation = $controller;
57-
$controller = $this->parser->parse($deprecatedNotation, false);
58-
59-
@trigger_error(sprintf('Referencing controllers with %s is deprecated since Symfony 4.1. Use %s instead.', $deprecatedNotation, $controller), E_USER_DEPRECATED);
60-
}
61-
62-
return parent::createController($controller);
63-
}
64-
6524
/**
6625
* {@inheritdoc}
6726
*/
@@ -77,9 +36,7 @@ private function configureController($controller, string $class)
7736
}
7837
if ($controller instanceof AbstractController) {
7938
if (null === $previousContainer = $controller->setContainer($this->container)) {
80-
@trigger_error(sprintf('Auto-injection of the container for "%s" is deprecated since Symfony 4.2. Configure it as a service instead.', $class), E_USER_DEPRECATED);
81-
// To be uncommented on Symfony 5:
82-
//throw new \LogicException(sprintf('"%s" has no container set, did you forget to define it as a service subscriber?', $class));
39+
throw new \LogicException(sprintf('"%s" has no container set, did you forget to define it as a service subscriber?', $class));
8340
} else {
8441
$controller->setContainer($previousContainer);
8542
}

src/Symfony/Bundle/FrameworkBundle/EventListener/ResolveControllerNameSubscriber.php

-56
This file was deleted.

src/Symfony/Bundle/FrameworkBundle/Resources/config/web.xml

-20
Original file line numberDiff line numberDiff line change
@@ -7,21 +7,10 @@
77
<services>
88
<defaults public="false" />
99

10-
<service id=".legacy_controller_name_converter" class="Symfony\Bundle\FrameworkBundle\Controller\ControllerNameParser">
11-
<tag name="monolog.logger" channel="request" />
12-
<argument type="service" id="kernel" />
13-
<argument>false</argument>
14-
</service>
15-
16-
<service id="controller_name_converter" alias=".legacy_controller_name_converter">
17-
<deprecated>The "%alias_id%" service is deprecated since Symfony 4.3.</deprecated>
18-
</service>
19-
2010
<service id="controller_resolver" class="Symfony\Bundle\FrameworkBundle\Controller\ControllerResolver">
2111
<tag name="monolog.logger" channel="request" />
2212
<argument type="service" id="service_container" />
2313
<argument type="service" id="logger" on-invalid="ignore" />
24-
<argument type="service" id=".legacy_controller_name_converter" />
2514
</service>
2615

2716
<service id="argument_metadata_factory" class="Symfony\Component\HttpKernel\ControllerMetadata\ArgumentMetadataFactory" />
@@ -86,15 +75,6 @@
8675
<tag name="kernel.event_subscriber" />
8776
</service>
8877

89-
<service id=".legacy_resolve_controller_name_subscriber" class="Symfony\Bundle\FrameworkBundle\EventListener\ResolveControllerNameSubscriber">
90-
<argument type="service" id=".legacy_controller_name_converter" />
91-
<argument>false</argument>
92-
<tag name="kernel.event_subscriber" />
93-
</service>
94-
<service id="resolve_controller_name_subscriber" alias=".legacy_resolve_controller_name_subscriber">
95-
<deprecated>The "%alias_id%" service is deprecated since Symfony 4.3.</deprecated>
96-
</service>
97-
9878
<service id="disallow_search_engine_index_response_listener" class="Symfony\Component\HttpKernel\EventListener\DisallowRobotsIndexingListener">
9979
<tag name="kernel.event_subscriber" />
10080
</service>

src/Symfony/Bundle/FrameworkBundle/Routing/DelegatingLoader.php

+2-29
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111

1212
namespace Symfony\Bundle\FrameworkBundle\Routing;
1313

14-
use Symfony\Bundle\FrameworkBundle\Controller\ControllerNameParser;
1514
use Symfony\Component\Config\Exception\LoaderLoadException;
1615
use Symfony\Component\Config\Loader\DelegatingLoader as BaseDelegatingLoader;
1716
use Symfony\Component\Config\Loader\LoaderResolverInterface;
@@ -28,28 +27,14 @@
2827
*/
2928
class DelegatingLoader extends BaseDelegatingLoader
3029
{
31-
/**
32-
* @deprecated since Symfony 4.4
33-
*/
34-
protected $parser;
3530
private $loading = false;
3631
private $defaultOptions;
3732

3833
/**
39-
* @param LoaderResolverInterface $resolver
40-
* @param array $defaultOptions
34+
* @param LoaderResolverInterface $resolver A LoaderResolverInterface instance
4135
*/
42-
public function __construct($resolver, $defaultOptions = [])
36+
public function __construct(LoaderResolverInterface $resolver, array $defaultOptions = [])
4337
{
44-
if ($resolver instanceof ControllerNameParser) {
45-
@trigger_error(sprintf('Passing a "%s" instance as first argument to "%s()" is deprecated since Symfony 4.4, pass a "%s" instance instead.', ControllerNameParser::class, __METHOD__, LoaderResolverInterface::class), E_USER_DEPRECATED);
46-
$this->parser = $resolver;
47-
$resolver = $defaultOptions;
48-
$defaultOptions = 2 < \func_num_args() ? func_get_arg(2) : [];
49-
} elseif (2 < \func_num_args() && func_get_arg(2) instanceof ControllerNameParser) {
50-
$this->parser = func_get_arg(2);
51-
}
52-
5338
$this->defaultOptions = $defaultOptions;
5439

5540
parent::__construct($resolver);
@@ -99,18 +84,6 @@ public function load($resource, $type = null)
9984
continue;
10085
}
10186

102-
if ($this->parser && 2 === substr_count($controller, ':')) {
103-
$deprecatedNotation = $controller;
104-
105-
try {
106-
$controller = $this->parser->parse($controller, false);
107-
108-
@trigger_error(sprintf('Referencing controllers with %s is deprecated since Symfony 4.1, use "%s" instead.', $deprecatedNotation, $controller), E_USER_DEPRECATED);
109-
} catch (\InvalidArgumentException $e) {
110-
// unable to optimize unknown notation
111-
}
112-
}
113-
11487
if (1 === substr_count($controller, ':')) {
11588
$nonDeprecatedNotation = str_replace(':', '::', $controller);
11689
// TODO deprecate this in 5.1

0 commit comments

Comments
 (0)