Merge branch '4.3' into 4.4
* 4.3: [HttpKernel] fixed class having a leading \ in a route controller [HttpKernel] trim the leading backslash in the controller init
This commit is contained in:
commit
8c91e7e48a
@ -47,6 +47,8 @@ class ContainerControllerResolver extends ControllerResolver
|
|||||||
*/
|
*/
|
||||||
protected function instantiateController($class)
|
protected function instantiateController($class)
|
||||||
{
|
{
|
||||||
|
$class = ltrim($class, '\\');
|
||||||
|
|
||||||
if ($this->container->has($class)) {
|
if ($this->container->has($class)) {
|
||||||
return $this->container->get($class);
|
return $this->container->get($class);
|
||||||
}
|
}
|
||||||
|
@ -119,6 +119,36 @@ class ContainerControllerResolverTest extends ControllerResolverTest
|
|||||||
$this->assertSame($service, $controller);
|
$this->assertSame($service, $controller);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @dataProvider getControllers
|
||||||
|
*/
|
||||||
|
public function testInstantiateControllerWhenControllerStartsWithABackslash($controller)
|
||||||
|
{
|
||||||
|
$service = new ControllerTestService('foo');
|
||||||
|
$class = ControllerTestService::class;
|
||||||
|
|
||||||
|
$container = $this->createMockContainer();
|
||||||
|
$container->expects($this->once())->method('has')->with($class)->willReturn(true);
|
||||||
|
$container->expects($this->once())->method('get')->with($class)->willReturn($service);
|
||||||
|
|
||||||
|
$resolver = $this->createControllerResolver(null, $container);
|
||||||
|
$request = Request::create('/');
|
||||||
|
$request->attributes->set('_controller', $controller);
|
||||||
|
|
||||||
|
$controller = $resolver->getController($request);
|
||||||
|
|
||||||
|
$this->assertInstanceOf(ControllerTestService::class, $controller[0]);
|
||||||
|
$this->assertSame('action', $controller[1]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getControllers()
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
['\\'.ControllerTestService::class.'::action'],
|
||||||
|
['\\'.ControllerTestService::class.':action'],
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
public function testExceptionWhenUsingRemovedControllerServiceWithClassNameAsName()
|
public function testExceptionWhenUsingRemovedControllerServiceWithClassNameAsName()
|
||||||
{
|
{
|
||||||
$this->expectException('InvalidArgumentException');
|
$this->expectException('InvalidArgumentException');
|
||||||
|
Reference in New Issue
Block a user