public function testGetArguments()
 {
     $resolver = new LegacyArgumentResolver();
     $request = Request::create('/');
     $controller = array(new self(), 'testGetArguments');
     $this->assertEquals(array(), $resolver->getArguments($request, $controller), '->getArguments() returns an empty array if the method takes no arguments');
     $request = Request::create('/');
     $request->attributes->set('foo', 'foo');
     $controller = array(new self(), 'controllerMethod1');
     $this->assertEquals(array('foo'), $resolver->getArguments($request, $controller), '->getArguments() returns an array of arguments for the controller method');
     $request = Request::create('/');
     $request->attributes->set('foo', 'foo');
     $controller = array(new self(), 'controllerMethod2');
     $this->assertEquals(array('foo', null), $resolver->getArguments($request, $controller), '->getArguments() uses default values if present');
     $request->attributes->set('bar', 'bar');
     $this->assertEquals(array('foo', 'bar'), $resolver->getArguments($request, $controller), '->getArguments() overrides default values if provided in the request attributes');
     $request = Request::create('/');
     $request->attributes->set('foo', 'foo');
     $controller = function ($foo) {
     };
     $this->assertEquals(array('foo'), $resolver->getArguments($request, $controller));
     $request = Request::create('/');
     $request->attributes->set('foo', 'foo');
     $controller = function ($foo, $bar = 'bar') {
     };
     $this->assertEquals(array('foo', 'bar'), $resolver->getArguments($request, $controller));
     $request = Request::create('/');
     $request->attributes->set('foo', 'foo');
     $controller = new self();
     $this->assertEquals(array('foo', null), $resolver->getArguments($request, $controller));
     $request->attributes->set('bar', 'bar');
     $this->assertEquals(array('foo', 'bar'), $resolver->getArguments($request, $controller));
     $request = Request::create('/');
     $request->attributes->set('foo', 'foo');
     $request->attributes->set('foobar', 'foobar');
     $controller = 'Symfony\\Component\\HttpKernel\\Tests\\Controller\\another_controller_function';
     $this->assertEquals(array('foo', 'foobar'), $resolver->getArguments($request, $controller));
     $request = Request::create('/');
     $request->attributes->set('foo', 'foo');
     $request->attributes->set('foobar', 'foobar');
     $controller = array(new self(), 'controllerMethod3');
     try {
         $resolver->getArguments($request, $controller);
         $this->fail('->getArguments() throws a \\RuntimeException exception if it cannot determine the argument value');
     } catch (\Exception $e) {
         $this->assertInstanceOf('\\RuntimeException', $e, '->getArguments() throws a \\RuntimeException exception if it cannot determine the argument value');
     }
     $request = Request::create('/');
     $controller = array(new self(), 'controllerMethod5');
     $this->assertEquals(array($request), $resolver->getArguments($request, $controller), '->getArguments() injects the request');
 }
Exemplo n.º 2
0
 /**
  * @deprecated This method is deprecated as of 3.1 and will be removed in 4.0. Implement the ArgumentResolverInterface or extend the LegacyArgumentResolver instead.
  */
 protected function doGetArguments(Request $request, $controller, array $parameters)
 {
     @trigger_error(sprintf('%s is deprecated as of 3.1 and will be removed in 4.0. Implement the %s or extend the %s and inject it in the HttpKernel instead.', __METHOD__, ArgumentResolverInterface::class, LegacyArgumentResolver::class), E_USER_DEPRECATED);
     return parent::doGetArguments($request, $controller, $parameters);
 }