summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSam Light <sam@lightscale.co.uk>2026-06-10 19:00:33 +0100
committerSam Light <sam@lightscale.co.uk>2026-06-10 19:00:33 +0100
commit7144cad2df09b68a7359955242aabef746a826b3 (patch)
tree8d53162bb19aba1e49f1cdbfb224992152841b2c /src
parentfdb23965a0daf06e85de4fc11a83e5f96656cc81 (diff)
Setup structure for storing middleware and added test todos
Diffstat (limited to 'src')
-rw-r--r--src/Concerns/CreatesGroups.php13
-rw-r--r--src/Concerns/HasMiddleware.php7
-rw-r--r--src/Group.php6
-rw-r--r--src/Route.php2
-rw-r--r--src/RouteDefinition.php12
5 files changed, 40 insertions, 0 deletions
diff --git a/src/Concerns/CreatesGroups.php b/src/Concerns/CreatesGroups.php
index e6e4588..4a2b862 100644
--- a/src/Concerns/CreatesGroups.php
+++ b/src/Concerns/CreatesGroups.php
@@ -4,6 +4,7 @@ declare(strict_types=1);
namespace Lightscale\Router\Concerns;
+use Lightscale\Router\Contracts\Middleware;
use Lightscale\Router\Group;
trait CreatesGroups
@@ -25,4 +26,16 @@ trait CreatesGroups
name: $value,
);
}
+
+ /** @param Middleware|Middleware[] $value */
+ public function middleware(Middleware|array $value): Group
+ {
+ $value = is_array($value) ? $value : [$value];
+
+ return new Group(
+ router: $this->getRouter(),
+ parent: $this->getGroup(),
+ middleware: $value,
+ );
+ }
}
diff --git a/src/Concerns/HasMiddleware.php b/src/Concerns/HasMiddleware.php
index e0c6b1a..ccde485 100644
--- a/src/Concerns/HasMiddleware.php
+++ b/src/Concerns/HasMiddleware.php
@@ -19,6 +19,13 @@ trait HasMiddleware
...$this->middleware,
...$middleware,
];
+
return $this;
}
+
+ /** @return Middleware[] */
+ public function getMiddleware(): array
+ {
+ return $this->middleware;
+ }
}
diff --git a/src/Group.php b/src/Group.php
index 05fa93b..9faae2c 100644
--- a/src/Group.php
+++ b/src/Group.php
@@ -4,16 +4,22 @@ declare(strict_types=1);
namespace Lightscale\Router;
+use Lightscale\Router\Contracts\Middleware;
+
class Group
{
use Concerns\HasAncestors;
+ use Concerns\HasMiddleware;
+ /** @param Middleware[] $middleware */
public function __construct(
private Router $router,
private ?Group $parent,
private ?string $prefix = null,
private ?string $name = null,
+ array $middleware = [],
) {
+ $this->middleware = $middleware;
}
public function getRouter(): Router
diff --git a/src/Route.php b/src/Route.php
index f432d61..58c2397 100644
--- a/src/Route.php
+++ b/src/Route.php
@@ -9,6 +9,8 @@ use Lightscale\Router\Enums\HttpMethod;
class Route
{
+ use Concerns\HasMiddleware;
+
protected Closure $handler;
protected PathSegment $segment;
diff --git a/src/RouteDefinition.php b/src/RouteDefinition.php
index 860c918..b015ba8 100644
--- a/src/RouteDefinition.php
+++ b/src/RouteDefinition.php
@@ -4,6 +4,8 @@ declare(strict_types=1);
namespace Lightscale\Router;
+use Lightscale\Router\Contracts\Middleware;
+
class RouteDefinition
{
public function __construct(
@@ -31,6 +33,16 @@ class RouteDefinition
return $this;
}
+ /** @param Middleware|Middleware[] $value */
+ public function middleware(Middleware|array $value): static
+ {
+ $value = is_array($value) ? $value : [$value];
+
+ $this->route->addMiddleware($value);
+
+ return $this;
+ }
+
public function getRoute(): Route
{
return $this->route;