for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
<?php
/**
* This file is part of coisa/http.
*
* (c) Felipe Sayão Lobato Abreu <[email protected]>
* This source file is subject to the license that is bundled
* with this source code in the file LICENSE.
*/
declare(strict_types=1);
namespace CoiSA\Http\Middleware;
use CoiSA\Http\Handler\MiddlewareHandler;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\MiddlewareInterface;
use Psr\Http\Server\RequestHandlerInterface;
* Class MiddlewareAggregator
* @package CoiSA\Http\Middleware
final class MiddlewareAggregator implements MiddlewareInterface
{
* @var MiddlewareInterface[]
private $middlewares;
* MiddlewareAggregator constructor.
* @param MiddlewareInterface ...$middlewares
public function __construct(MiddlewareInterface ...$middlewares)
$this->middlewares = $middlewares;
}
* {@inheritdoc}
public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
$middleware = \current($this->middlewares);
if (!$middleware) {
\reset($this->middlewares);
return $handler->handle($request);
\next($this->middlewares);
$requestHandler = new MiddlewareHandler(
$this,
$handler
);
return $middleware->process($request, $requestHandler);