simplified code

This commit is contained in:
Fabien Potencier 2016-03-01 11:58:16 +01:00
parent f39afc85db
commit bedcb151b8
3 changed files with 4 additions and 7 deletions

View File

@ -117,10 +117,9 @@ class ControllerResolver implements ControllerResolverInterface
{
$attributes = $request->attributes->all();
$arguments = array();
$variadicAvailable = method_exists('\ReflectionMethod', 'isVariadic');
foreach ($parameters as $param) {
if (array_key_exists($param->name, $attributes)) {
if ($variadicAvailable && $param->isVariadic() && is_array($attributes[$param->name])) {
if (PHP_VERSION_ID >= 50600 && $param->isVariadic() && is_array($attributes[$param->name])) {
$arguments = array_merge($arguments, array_values($attributes[$param->name]));
} else {
$arguments[] = $attributes[$param->name];

View File

@ -205,12 +205,10 @@ class ControllerResolverTest extends \PHPUnit_Framework_TestCase
$resolver = new ControllerResolver();
$request = Request::create('/');
$param1 = new \stdClass();
$param2 = new \stdClass();
$request->attributes->set('foo', 'foo');
$request->attributes->set('bar', array($param1, $param2));
$request->attributes->set('bar', array('foo', 'bar'));
$controller = array(new VariadicController(), 'action');
$this->assertEquals(array('foo', $param1, $param2), $resolver->getArguments($request, $controller));
$this->assertEquals(array('foo', 'foo', 'bar'), $resolver->getArguments($request, $controller));
}
public function testCreateControllerCanReturnAnyCallable()

View File

@ -4,7 +4,7 @@ namespace Symfony\Component\HttpKernel\Tests\Fixtures\Controller;
class VariadicController
{
public function action($foo,...$bar)
public function action($foo, ...$bar)
{
}
}