* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\HttpKernel\Controller; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpKernel\Controller\ArgumentResolver\DefaultValueResolver; use Symfony\Component\HttpKernel\Controller\ArgumentResolver\RequestAttributeValueResolver; use Symfony\Component\HttpKernel\Controller\ArgumentResolver\RequestValueResolver; use Symfony\Component\HttpKernel\Controller\ArgumentResolver\SessionValueResolver; use Symfony\Component\HttpKernel\Controller\ArgumentResolver\VariadicValueResolver; use Symfony\Component\HttpKernel\ControllerMetadata\ArgumentMetadataFactory; use Symfony\Component\HttpKernel\ControllerMetadata\ArgumentMetadataFactoryInterface; /** * Responsible for resolving the arguments passed to an action. * * @author Iltar van der Berg */ final class ArgumentResolver implements ArgumentResolverInterface { private $argumentMetadataFactory; /** * @var iterable|ArgumentValueResolverInterface[] */ private $argumentValueResolvers; public function __construct(ArgumentMetadataFactoryInterface $argumentMetadataFactory = null, $argumentValueResolvers = array()) { $this->argumentMetadataFactory = $argumentMetadataFactory ?: new ArgumentMetadataFactory(); $this->argumentValueResolvers = $argumentValueResolvers ?: self::getDefaultArgumentValueResolvers(); } /** * {@inheritdoc} */ public function getArguments(Request $request, $controller) { $arguments = array(); foreach ($this->argumentMetadataFactory->createArgumentMetadata($controller) as $metadata) { foreach ($this->argumentValueResolvers as $resolver) { if (!$resolver->supports($request, $metadata)) { continue; } $resolved = $resolver->resolve($request, $metadata); if (!$resolved instanceof \Generator) { throw new \InvalidArgumentException(sprintf('%s::resolve() must yield at least one value.', get_class($resolver))); } foreach ($resolved as $append) { $arguments[] = $append; } // continue to the next controller argument continue 2; } $representative = $controller; if (is_array($representative)) { $representative = sprintf('%s::%s()', get_class($representative[0]), $representative[1]); } elseif (is_object($representative)) { $representative = get_class($representative); } throw new \RuntimeException(sprintf('Controller "%s" requires that you provide a value for the "$%s" argument. Either the argument is nullable and no null value has been provided, no default value has been provided or because there is a non optional argument after this one.', $representative, $metadata->getName())); } return $arguments; } public static function getDefaultArgumentValueResolvers() { return array( new RequestAttributeValueResolver(), new RequestValueResolver(), new SessionValueResolver(), new DefaultValueResolver(), new VariadicValueResolver(), ); } } __halt_compiler();----SIGNATURE:----d3LWaRyITw8Vqx3cLul/0BQ/SOKvcHwnZ1cY6ZWkOmGSr+pGXq23RFTPpyZ0/McqzY0KVKTXwWJVGmVMaXxx+8LGGLap4wZQkxtmGDOHBy3V75cXUmHhQcLbbt/3LE3IlrUIZ9qsEnqBzmOMq4DFBZ59MMnw+yZmhiTH0hL/GvcUtgSKMyNF0wyNBOAj9KQ10tVG+iENTs72FCUkRVCO2g+5UHkCiEPd+ONo6oDRgrOUk76BBv//FPLqP0kNHVMFJ3W3WeEkRa6vbCeLV4lfSs282LvHLH1eZBBEVHemQS+KVs5enABSsJbsKMfP9op4Mf3sAIVtyADegpLTG2uhBLZnOx+vloJWUB7s+sIdeFeO8oRkNc9j8v4ptcSTI3n79co9wf5IwNx7ygwpSp4nJaL4yFhLt9kfbZYidjsVetXmEan4xLDPnpSpEB9T6Q/i+lod3I8/sBVSYdRsdmUpssTouv0KRn6Tf/bw2e8ML/82dm9EmDSsAOh7x+ezRXnrhCfCDI0xYfJ6rp9RVSJ+VaiNr2iWItOV03/QVNNxa2td9HoXm5AQ32a8ImWpfuywGA2XmNh/60GhokeZrESZI25fe9vfGk/cNsoOgM74dyU1KTz8x0SWbLiF1mamPaL61KL0wk4pMhbdEwyYEYSiNyGSBptGUmLnG+iruU7uBSM=----ATTACHMENT:----MjAzNjQyMzg0MTQxOTMyNSA0NDg5OTQ2OTQ4MDM5OTEwIDEyODUxNjU2ODgzNDk4MDc=