annotate vendor/stack/builder/src/Stack/StackedHttpKernel.php @ 19:fa3358dc1485 tip

Add ndrum files
author Chris Cannam
date Wed, 28 Aug 2019 13:14:47 +0100
parents 4c8ae668cc8c
children
rev   line source
Chris@0 1 <?php
Chris@0 2
Chris@0 3 namespace Stack;
Chris@0 4
Chris@0 5 use Symfony\Component\HttpKernel\HttpKernelInterface;
Chris@0 6 use Symfony\Component\HttpKernel\TerminableInterface;
Chris@0 7 use Symfony\Component\HttpFoundation\Request;
Chris@0 8 use Symfony\Component\HttpFoundation\Response;
Chris@0 9
Chris@0 10 class StackedHttpKernel implements HttpKernelInterface, TerminableInterface
Chris@0 11 {
Chris@0 12 private $app;
Chris@0 13 private $middlewares = array();
Chris@0 14
Chris@0 15 public function __construct(HttpKernelInterface $app, array $middlewares)
Chris@0 16 {
Chris@0 17 $this->app = $app;
Chris@0 18 $this->middlewares = $middlewares;
Chris@0 19 }
Chris@0 20
Chris@0 21 public function handle(Request $request, $type = HttpKernelInterface::MASTER_REQUEST, $catch = true)
Chris@0 22 {
Chris@0 23 return $this->app->handle($request, $type, $catch);
Chris@0 24 }
Chris@0 25
Chris@0 26 public function terminate(Request $request, Response $response)
Chris@0 27 {
Chris@0 28 $prevKernel = null;
Chris@0 29 foreach ($this->middlewares as $kernel) {
Chris@0 30 // if prev kernel was terminable we can assume this middleware has already been called
Chris@0 31 if (!$prevKernel instanceof TerminableInterface && $kernel instanceof TerminableInterface) {
Chris@0 32 $kernel->terminate($request, $response);
Chris@0 33 }
Chris@0 34 $prevKernel = $kernel;
Chris@0 35 }
Chris@0 36 }
Chris@0 37 }