getRouter(), parent: $this->getGroup(), prefix: $value, ); } public function name(string $value): Group { return new Group( router: $this->getRouter(), parent: $this->getGroup(), 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, ); } /** @param callable(GroupDefinition): void $cb */ public function group(callable $cb): Group { $group = new Group( router: $this->getRouter(), parent: $this->getGroup(), ); ($cb)(new GroupDefinition( $group )); return $group; } }