8000 [HttpKernel] fixed ControllerResolver when the controller is a class … · ajitomatix/symfony@be031f5 · GitHub
[go: up one dir, main page]

Skip to content
This repository was archived by the owner on Sep 27, 2024. It is now read-only.

Commit be031f5

Browse files
committed
[HttpKernel] fixed ControllerResolver when the controller is a class name with an __invoke() method
1 parent e136718 commit be031f5

File tree

2 files changed

+9
-1
lines changed

2 files changed

+9
-1
lines changed

src/Symfony/Component/HttpKernel/Controller/ControllerResolver.php

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,10 +64,14 @@ public function getController(Request $request)
6464
return false;
6565
}
6666

67-
if (is_array($controller) || ((is_object($controller) || false === strpos($controller, ':')) && method_exists($controller, '__invoke'))) {
67+
if (is_array($controller) || (is_object($controller) && method_exists($controller, '__invoke'))) {
6868
return $controller;
6969
}
7070

71+
if (false === strpos($controller, ':') && method_exists($controller, '__invoke')) {
72+
return new $controller;
73+
}
74+
7175
list($controller, $method) = $this->createController($controller);
7276

7377
if (!method_exists($controller, $method)) {

tests/Symfony/Tests/Component/HttpKernel/Controller/ControllerResolverTest.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,10 @@ public function testGetController()
3939
$controller = $resolver->getController($request);
4040
$this->assertSame($this, $controller);
4141

42+
$request->attributes->set('_controller', 'Symfony\Tests\Component\HttpKernel\ControllerResolverTest');
43+
$controller = $resolver->getController($request);
44+
$this->assertInstanceOf('Symfony\Tests\Component\HttpKernel\ControllerResolverTest', $controller);
45+
4246
$request->attributes->set('_controller', array($this, 'controllerMethod1'));
4347
$controller = $resolver->getController($request);
4448
$this->assertSame(array($this, 'controllerMethod1'), $controller);

0 commit comments

Comments
 (0)
0