diff options
| author | Sam Light <sam@lightscale.co.uk> | 2026-06-10 19:00:33 +0100 |
|---|---|---|
| committer | Sam Light <sam@lightscale.co.uk> | 2026-06-10 19:00:33 +0100 |
| commit | 7144cad2df09b68a7359955242aabef746a826b3 (patch) | |
| tree | 8d53162bb19aba1e49f1cdbfb224992152841b2c /src | |
| parent | fdb23965a0daf06e85de4fc11a83e5f96656cc81 (diff) | |
Setup structure for storing middleware and added test todos
Diffstat (limited to 'src')
| -rw-r--r-- | src/Concerns/CreatesGroups.php | 13 | ||||
| -rw-r--r-- | src/Concerns/HasMiddleware.php | 7 | ||||
| -rw-r--r-- | src/Group.php | 6 | ||||
| -rw-r--r-- | src/Route.php | 2 | ||||
| -rw-r--r-- | src/RouteDefinition.php | 12 |
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; |
