/** * @param Request $request * @param int $type * @param bool $catch * * @return Response * @throws \Exception */ public function handle(Request $request, $type = self::MASTER_REQUEST, $catch = true) { if (false === $this->config->get('debug')) { $this->registerFatalErrorHandler(); } $factory = new StackedHttpKernel($this->container, $dispatch = $request->attributes->get('dispatch')); list($name, $this->stack) = $factory->register($this, 'pyrite.root_kernel', $dispatch); return $this->stack->handle($request, $type, $catch); }
/** @test */ public function terminateShouldDelegateToMiddlewares() { $app = $this->getTerminableMock(new Response('ok')); $foo = $this->getTerminableMock(); $bar = $this->getTerminableMock(); $kernel = new StackedHttpKernel($app, array($app, $foo, $bar)); $request = Request::create('/'); $response = $kernel->handle($request); $kernel->terminate($request, $response); }
/** @test */ public function terminateShouldDelegateToMiddlewares() { $first = new TerminableKernelSpy(); $second = new TerminableKernelSpy($first); $third = new KernelSpy($second); $fourth = new TerminableKernelSpy($third); $fifth = new TerminableKernelSpy($fourth); $kernel = new StackedHttpKernel($fifth, $middlewares = array($fifth, $fourth, $third, $second, $first)); $request = Request::create('/'); $response = $kernel->handle($request); $kernel->terminate($request, $response); $this->assertTerminablesCalledOnce($middlewares); }