diff options
Diffstat (limited to 'src/Group.php')
| -rw-r--r-- | src/Group.php | 17 |
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 { |
