From b899a995e2fd977fbf7497b36b2dbc8d641ef398 Mon Sep 17 00:00:00 2001 From: Sam Light Date: Wed, 10 Jun 2026 19:00:32 +0100 Subject: Started structure for middleware --- src/AbstractStrategy.php | 32 ++++++++++++++++++++++++++++++++ src/BasicStrategy.php | 3 +-- src/Contracts/Middleware.php | 16 ++++++++++++++++ src/Contracts/Strategy.php | 10 ++++++++++ 4 files changed, 59 insertions(+), 2 deletions(-) create mode 100644 src/AbstractStrategy.php create mode 100644 src/Contracts/Middleware.php (limited to 'src') diff --git a/src/AbstractStrategy.php b/src/AbstractStrategy.php new file mode 100644 index 0000000..54b78c1 --- /dev/null +++ b/src/AbstractStrategy.php @@ -0,0 +1,32 @@ + 0 ? array_reduce( + array_reverse($middlewares), + fn (callable $handler, Middleware $middleware) => fn (ServerRequestInterface $request) => $middleware->handle($request, $handler), + $handler + ) : $handler; + + return $handler($request); + } +} diff --git a/src/BasicStrategy.php b/src/BasicStrategy.php index 5043576..d2ee91a 100644 --- a/src/BasicStrategy.php +++ b/src/BasicStrategy.php @@ -4,13 +4,12 @@ declare(strict_types=1); namespace Lightscale\Router; -use Lightscale\Router\Contracts\Strategy; use Lightscale\Router\Exceptions\InvalidResponseException; use Lightscale\Router\Exceptions\NotFoundException; use Psr\Http\Message\RequestInterface; use Psr\Http\Message\ResponseInterface; -class BasicStrategy implements Strategy +class BasicStrategy extends AbstractStrategy { public function runRoute(RouteCall $call): ResponseInterface { diff --git a/src/Contracts/Middleware.php b/src/Contracts/Middleware.php new file mode 100644 index 0000000..96037c8 --- /dev/null +++ b/src/Contracts/Middleware.php @@ -0,0 +1,16 @@ +