summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/Concerns/HasMiddleware.php24
-rw-r--r--src/Router.php1
2 files changed, 25 insertions, 0 deletions
diff --git a/src/Concerns/HasMiddleware.php b/src/Concerns/HasMiddleware.php
new file mode 100644
index 0000000..e0c6b1a
--- /dev/null
+++ b/src/Concerns/HasMiddleware.php
@@ -0,0 +1,24 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Lightscale\Router\Concerns;
+
+use Lightscale\Router\Contracts\Middleware;
+
+trait HasMiddleware
+{
+ /** @var Middleware[] */
+ private array $middleware = [];
+
+ /** @param Middleware[]|Middleware $middleware */
+ public function addMiddleware(array|Middleware $middleware): static
+ {
+ $middleware = is_array($middleware) ? $middleware : [$middleware];
+ $this->middleware = [
+ ...$this->middleware,
+ ...$middleware,
+ ];
+ return $this;
+ }
+}
diff --git a/src/Router.php b/src/Router.php
index 74c4e89..62ac52f 100644
--- a/src/Router.php
+++ b/src/Router.php
@@ -14,6 +14,7 @@ class Router
{
use Concerns\CreatesRoutes;
use Concerns\CreatesGroups;
+ use Concerns\HasMiddleware;
private PathSegment $root;
private Strategy $strategy;