/** * @param \Psr\Http\Message\ServerRequestInterface $request The server request * @param \Psr\Http\Message\ResponseInterface $response The response object * @return \Psr\Http\Message\ResponseInterface An updated response */ public function __invoke(ServerRequestInterface $request, ResponseInterface $response) { $next = $this->middleware->get($this->index); if ($next) { $this->index++; return $next($request, $response, $this); } // End of the stack return $response; }
public function testInsertAt() { $one = function () { }; $two = function () { }; $three = function () { }; $stack = new MiddlewareStack(); $stack->push($one)->push($two)->insertAt(0, $three); $this->assertSame($three, $stack->get(0)); $this->assertSame($one, $stack->get(1)); $this->assertSame($two, $stack->get(2)); $stack = new MiddlewareStack(); $stack->push($one)->push($two)->insertAt(1, $three); $this->assertSame($one, $stack->get(0)); $this->assertSame($three, $stack->get(1)); $this->assertSame($two, $stack->get(2)); }