Skip to content

Commit

Permalink
[HttpKernel] fixed ControllerResolver when the controller is a class …
Browse files Browse the repository at this point in the history
…name with an __invoke() method
  • Loading branch information
fabpot committed Aug 8, 2011
1 parent e136718 commit be031f5
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 1 deletion.
Expand Up @@ -64,10 +64,14 @@ public function getController(Request $request)
return false;
}

if (is_array($controller) || ((is_object($controller) || false === strpos($controller, ':')) && method_exists($controller, '__invoke'))) {
if (is_array($controller) || (is_object($controller) && method_exists($controller, '__invoke'))) {
return $controller;
}

if (false === strpos($controller, ':') && method_exists($controller, '__invoke')) {
return new $controller;
}

list($controller, $method) = $this->createController($controller);

if (!method_exists($controller, $method)) {
Expand Down
Expand Up @@ -39,6 +39,10 @@ public function testGetController()
$controller = $resolver->getController($request);
$this->assertSame($this, $controller);

$request->attributes->set('_controller', 'Symfony\Tests\Component\HttpKernel\ControllerResolverTest');
$controller = $resolver->getController($request);
$this->assertInstanceOf('Symfony\Tests\Component\HttpKernel\ControllerResolverTest', $controller);

$request->attributes->set('_controller', array($this, 'controllerMethod1'));
$controller = $resolver->getController($request);
$this->assertSame(array($this, 'controllerMethod1'), $controller);
Expand Down

0 comments on commit be031f5

Please sign in to comment.