summaryrefslogtreecommitdiff
path: root/src/Group.php
diff options
context:
space:
mode:
Diffstat (limited to 'src/Group.php')
-rw-r--r--src/Group.php17
1 files changed, 15 insertions, 2 deletions
diff --git a/src/Group.php b/src/Group.php
index 9faae2c..7d9db95 100644
--- a/src/Group.php
+++ b/src/Group.php
@@ -9,12 +9,14 @@ use Lightscale\Router\Contracts\Middleware;
class Group
{
use Concerns\HasAncestors;
- use Concerns\HasMiddleware;
+ use Concerns\HasMiddleware {
+ Concerns\HasMiddleware::getMiddleware as protected traitGetMiddleware;
+ }
/** @param Middleware[] $middleware */
public function __construct(
private Router $router,
- private ?Group $parent,
+ private ?self $parent,
private ?string $prefix = null,
private ?string $name = null,
array $middleware = [],
@@ -86,6 +88,17 @@ class Group
return 0 === count($names) ? null : implode('', $names);
}
+ /** @return Middleware[] */
+ public function getMiddleware(): array
+ {
+ $r = [];
+ foreach ($this->getAncestorsAndSelf() as $g) {
+ $r = [...$r, ...$g->traitGetMiddleware()];
+ }
+
+ return $r;
+ }
+
/** @param callable(GroupDefinition): void $cb */
public function group(callable $cb): void
{