Chris@14: Chris@14: * Chris@14: * For the full copyright and license information, please view the LICENSE Chris@14: * file that was distributed with this source code. Chris@14: */ Chris@14: Chris@14: namespace Symfony\Component\HttpKernel\Controller\ArgumentResolver; Chris@14: Chris@14: use Symfony\Component\HttpFoundation\Request; Chris@14: use Symfony\Component\HttpFoundation\Session\SessionInterface; Chris@14: use Symfony\Component\HttpKernel\Controller\ArgumentValueResolverInterface; Chris@14: use Symfony\Component\HttpKernel\ControllerMetadata\ArgumentMetadata; Chris@14: Chris@14: /** Chris@14: * Yields the Session. Chris@14: * Chris@14: * @author Iltar van der Berg Chris@14: */ Chris@14: final class SessionValueResolver implements ArgumentValueResolverInterface Chris@14: { Chris@14: /** Chris@14: * {@inheritdoc} Chris@14: */ Chris@14: public function supports(Request $request, ArgumentMetadata $argument) Chris@14: { Chris@14: $type = $argument->getType(); Chris@14: if (SessionInterface::class !== $type && !is_subclass_of($type, SessionInterface::class)) { Chris@14: return false; Chris@14: } Chris@14: Chris@14: return $request->getSession() instanceof $type; Chris@14: } Chris@14: Chris@14: /** Chris@14: * {@inheritdoc} Chris@14: */ Chris@14: public function resolve(Request $request, ArgumentMetadata $argument) Chris@14: { Chris@14: yield $request->getSession(); Chris@14: } Chris@14: }