From b2aaaa8fa04f690fed598c31b65a6405b565c303 Mon Sep 17 00:00:00 2001 From: Sam Light Date: Wed, 10 Jun 2026 21:37:20 +0100 Subject: Removed abstract strategy and broke all function implementations to traits --- src/Concerns/Strategy/ParsesStringParameters.php | 21 +++++++++++++++ src/Concerns/Strategy/RunsMiddleware.php | 31 +++++++++++++++++++++++ src/Concerns/Strategy/RunsRoute.php | 23 +++++++++++++++++ src/Concerns/Strategy/ThrowsNotFoundException.php | 17 +++++++++++++ 4 files changed, 92 insertions(+) create mode 100644 src/Concerns/Strategy/ParsesStringParameters.php create mode 100644 src/Concerns/Strategy/RunsMiddleware.php create mode 100644 src/Concerns/Strategy/RunsRoute.php create mode 100644 src/Concerns/Strategy/ThrowsNotFoundException.php (limited to 'src/Concerns/Strategy') diff --git a/src/Concerns/Strategy/ParsesStringParameters.php b/src/Concerns/Strategy/ParsesStringParameters.php new file mode 100644 index 0000000..6dbc628 --- /dev/null +++ b/src/Concerns/Strategy/ParsesStringParameters.php @@ -0,0 +1,21 @@ + $value) { + if (!is_string($value)) { + throw new InvalidArgumentException("Parameter {$key} is not a string."); + } + } + + return $parameters; + } +} diff --git a/src/Concerns/Strategy/RunsMiddleware.php b/src/Concerns/Strategy/RunsMiddleware.php new file mode 100644 index 0000000..4816a04 --- /dev/null +++ b/src/Concerns/Strategy/RunsMiddleware.php @@ -0,0 +1,31 @@ + 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/Concerns/Strategy/RunsRoute.php b/src/Concerns/Strategy/RunsRoute.php new file mode 100644 index 0000000..849ae80 --- /dev/null +++ b/src/Concerns/Strategy/RunsRoute.php @@ -0,0 +1,23 @@ +route->getHandler())($call); + + if ($result instanceof ResponseInterface) { + return $result; + } + + throw new InvalidResponseException(); + } +} diff --git a/src/Concerns/Strategy/ThrowsNotFoundException.php b/src/Concerns/Strategy/ThrowsNotFoundException.php new file mode 100644 index 0000000..996bdb5 --- /dev/null +++ b/src/Concerns/Strategy/ThrowsNotFoundException.php @@ -0,0 +1,17 @@ +