Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 8bf1b49

Browse filesBrowse files
committed
[FrameworkBundle]: use __invoke function if no method is defined in routing configuration
1 parent 15e9eec commit 8bf1b49
Copy full SHA for 8bf1b49

File tree

2 files changed

+29
-0
lines changed
Filter options

2 files changed

+29
-0
lines changed

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

Copy file name to clipboardExpand all lines: src/Symfony/Bundle/FrameworkBundle/Controller/ControllerResolver.php
+7Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,13 @@ protected function createController($controller)
4646
$resolvedController[0] = $this->configureController($resolvedController[0]);
4747
}
4848

49+
if (is_object($resolvedController) && method_exists($resolvedController, '__invoke')) {
50+
$resolvedController = [
51+
$this->configureController($resolvedController),
52+
'__invoke'
53+
];
54+
}
55+
4956
return $resolvedController;
5057
}
5158

‎src/Symfony/Bundle/FrameworkBundle/Tests/Controller/ControllerResolverTest.php

Copy file name to clipboardExpand all lines: src/Symfony/Bundle/FrameworkBundle/Tests/Controller/ControllerResolverTest.php
+22Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,24 @@
2424

2525
class ControllerResolverTest extends ContainerControllerResolverTest
2626
{
27+
public function testGetControllerWithServiceWithoutMethod()
28+
{
29+
class_exists(AbstractControllerTest::class);
30+
31+
$dummyController = new DummyController();
32+
$container = new Container();
33+
$container->set('app.index_controller', $dummyController);
34+
35+
$resolver = $this->createControllerResolver(null, $container);
36+
$request = Request::create('/');
37+
$request->attributes->set('_controller', 'app.index_controller');
38+
39+
$controller = $resolver->getController($request);
40+
41+
$this->assertSame($container, $controller[0]->getContainer());
42+
$this->assertSame('__invoke', $controller[1]);
43+
}
44+
2745
public function testGetControllerOnContainerAware()
2846
{
2947
$resolver = $this->createControllerResolver();
@@ -217,6 +235,10 @@ public function getContainer()
217235
return $this->container;
218236
}
219237

238+
public function __invoke()
239+
{
240+
}
241+
220242
public function fooAction()
221243
{
222244
}

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.