* * 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:----h4KfFIK2I1i6jp+4AXHIoP1Buo4vFbjv4X3JkKvSBk8uvQTsHzKFw/tiWgGz9DgpIA098rSOpQM0QxALAhfAIBaujuEYiK/zxNHI4zftU/ny9xdcYtt7ZG8nX5SqC6ZH0lnG+1e6EJbbDvVMDC6FZ7Q1q/ibws/0UxDB4xvLPVTNYTN0jqF28veAbcgzrsFye/+PjQUGNjMgZmRVeJDSdWvq/Cdalie0VsWTc0jNxqiPNwUDEK4HBkIXOmWnyCfIRqni4cypVACcSMfiGEgvigWTYUZq2ybq4OLl19SqICmFnyxibupsgN6r9htnPhqLD6NaW52AonOlmkqUYNGhU+yAMvfHT+xPZOBQCVes3qztY4a9reSTj53eGOvGzZ2OadOiRJlPwxsEmwmvMTIW/8+o3cCAenlD4IAYjRINDr3wOX4nV+8cGAFsDDTbwnkfScptgB7RXQnYtCeYvxHJLYMwEHEb96SSqFhjMURgfEgY8AzdDJJpUQiBeP5mWBINQlEUgy9MrN+6XFThPCcLYZB1fZYdh+5DVkBoaDiPgQP2EaR8bKC8akbOk0IHN5eWiycco19snnRh86KxLZDxwTS2Hl0G7/8fTQ5o0UHuOl+fjf3UPqxRwrNGhk4btRulUkpo2LEZq4RFaNUyTbMKxiXQMFgVbV5/UVxqwILnrVs=----ATTACHMENT:----OTQ3NzE0MTA0OTM2ODI4MCAzMjA3MjQzMzM2OTY0OTA5IDI4MDU2NjEwNzE3Njc5NTk=