summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSam Light <sam@lightscale.co.uk>2026-06-10 21:37:20 +0100
committerSam Light <sam@lightscale.co.uk>2026-06-10 21:37:20 +0100
commitb2aaaa8fa04f690fed598c31b65a6405b565c303 (patch)
tree9fce597275fbf22e0aa33784a6706a7ad878f9bb
parentd2a3da17cea4e172949ceac033e2455be0466b94 (diff)
Removed abstract strategy and broke all function implementations to traitsHEADmaster
-rw-r--r--src/BasicStrategy.php26
-rw-r--r--src/Concerns/Strategy/ParsesStringParameters.php21
-rw-r--r--src/Concerns/Strategy/RunsMiddleware.php (renamed from src/AbstractStrategy.php)17
-rw-r--r--src/Concerns/Strategy/RunsRoute.php23
-rw-r--r--src/Concerns/Strategy/ThrowsNotFoundException.php17
5 files changed, 69 insertions, 35 deletions
diff --git a/src/BasicStrategy.php b/src/BasicStrategy.php
index d2ee91a..09d8db0 100644
--- a/src/BasicStrategy.php
+++ b/src/BasicStrategy.php
@@ -4,26 +4,12 @@ declare(strict_types=1);
namespace Lightscale\Router;
-use Lightscale\Router\Exceptions\InvalidResponseException;
-use Lightscale\Router\Exceptions\NotFoundException;
-use Psr\Http\Message\RequestInterface;
-use Psr\Http\Message\ResponseInterface;
+use Lightscale\Router\Contracts\Strategy;
-class BasicStrategy extends AbstractStrategy
+class BasicStrategy implements Strategy
{
- public function runRoute(RouteCall $call): ResponseInterface
- {
- $result = ($call->route->getHandler())($call);
-
- if ($result instanceof ResponseInterface) {
- return $result;
- }
-
- throw new InvalidResponseException();
- }
-
- public function notFound(RequestInterface $request): ResponseInterface
- {
- throw new NotFoundException();
- }
+ use Concerns\Strategy\RunsRoute;
+ use Concerns\Strategy\RunsMiddleware;
+ use Concerns\Strategy\ThrowsNotFoundException;
+ use Concerns\Strategy\ParsesStringParameters;
}
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 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Lightscale\Router\Concerns\Strategy;
+
+use InvalidArgumentException;
+
+trait ParsesStringParameters
+{
+ public function parseParameters(array $parameters): array
+ {
+ foreach ($parameters as $key => $value) {
+ if (!is_string($value)) {
+ throw new InvalidArgumentException("Parameter {$key} is not a string.");
+ }
+ }
+
+ return $parameters;
+ }
+}
diff --git a/src/AbstractStrategy.php b/src/Concerns/Strategy/RunsMiddleware.php
index a68f5c1..4816a04 100644
--- a/src/AbstractStrategy.php
+++ b/src/Concerns/Strategy/RunsMiddleware.php
@@ -2,16 +2,14 @@
declare(strict_types=1);
-namespace Lightscale\Router;
+namespace Lightscale\Router\Concerns\Strategy;
-use InvalidArgumentException;
use Lightscale\Router\Contracts\Middleware;
-use Lightscale\Router\Contracts\Strategy;
use Psr\Http\Message\RequestInterface;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
-abstract class AbstractStrategy implements Strategy
+trait RunsMiddleware
{
/**
* @param Middleware[] $middlewares
@@ -30,15 +28,4 @@ abstract class AbstractStrategy implements Strategy
return $handler($request);
}
-
- public function parseParameters(array $parameters): array
- {
- foreach ($parameters as $key => $value) {
- if (!is_string($value)) {
- throw new InvalidArgumentException("Parameter {$key} is not a string.");
- }
- }
-
- return $parameters;
- }
}
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 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Lightscale\Router\Concerns\Strategy;
+
+use Lightscale\Router\Exceptions\InvalidResponseException;
+use Lightscale\Router\RouteCall;
+use Psr\Http\Message\ResponseInterface;
+
+trait RunsRoute
+{
+ public function runRoute(RouteCall $call): ResponseInterface
+ {
+ $result = ($call->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 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Lightscale\Router\Concerns\Strategy;
+
+use Lightscale\Router\Exceptions\NotFoundException;
+use Psr\Http\Message\RequestInterface;
+use Psr\Http\Message\ResponseInterface;
+
+trait ThrowsNotFoundException
+{
+ public function notFound(RequestInterface $_): ResponseInterface
+ {
+ throw new NotFoundException();
+ }
+}