123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- <?php
- /*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
- namespace Symfony\Component\HttpKernel\DependencyInjection;
- use Symfony\Component\HttpFoundation\Request;
- use Symfony\Component\HttpKernel\HttpKernelInterface;
- use Symfony\Component\HttpKernel\HttpKernel;
- use Symfony\Component\HttpKernel\Controller\ControllerResolverInterface;
- use Symfony\Component\EventDispatcher\EventDispatcherInterface;
- use Symfony\Component\DependencyInjection\ContainerInterface;
- use Symfony\Component\DependencyInjection\Scope;
- /**
- * Adds a managed request scope.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- * @author Johannes M. Schmitt <schmittjoh@gmail.com>
- */
- class ContainerAwareHttpKernel extends HttpKernel
- {
- protected $container;
- /**
- * Constructor.
- *
- * @param EventDispatcherInterface $dispatcher An EventDispatcherInterface instance
- * @param ContainerInterface $container A ContainerInterface instance
- * @param ControllerResolverInterface $controllerResolver A ControllerResolverInterface instance
- */
- public function __construct(EventDispatcherInterface $dispatcher, ContainerInterface $container, ControllerResolverInterface $controllerResolver)
- {
- parent::__construct($dispatcher, $controllerResolver);
- $this->container = $container;
- // the request scope might have been created before (see FrameworkBundle)
- if (!$container->hasScope('request')) {
- $container->addScope(new Scope('request'));
- }
- }
- /**
- * {@inheritdoc}
- */
- public function handle(Request $request, $type = HttpKernelInterface::MASTER_REQUEST, $catch = true)
- {
- $request->headers->set('X-Php-Ob-Level', ob_get_level());
- $this->container->enterScope('request');
- $this->container->set('request', $request, 'request');
- try {
- $response = parent::handle($request, $type, $catch);
- } catch (\Exception $e) {
- $this->container->set('request', null, 'request');
- $this->container->leaveScope('request');
- throw $e;
- }
- $this->container->set('request', null, 'request');
- $this->container->leaveScope('request');
- return $response;
- }
- }
|