diff --git a/README.md b/README.md index 58df691..483e67b 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ Documentation is available at: https://docs.dotkernel.org/dot-router/. ## Badges ![OSS Lifecycle](https://img.shields.io/osslifecycle/dotkernel/dot-router) -![PHP from Packagist (specify version)](https://img.shields.io/packagist/php-v/dotkernel/dot-router/1.0.3) +![PHP from Packagist (specify version)](https://img.shields.io/packagist/php-v/dotkernel/dot-router/1.0.4) [![GitHub issues](https://img.shields.io/github/issues/dotkernel/dot-router)](https://github.com/dotkernel/dot-router/issues) [![GitHub forks](https://img.shields.io/github/forks/dotkernel/dot-router)](https://github.com/dotkernel/dot-router/network) diff --git a/src/RouteGroupCollector.php b/src/RouteGroupCollector.php index 7e739e6..5f9b03d 100644 --- a/src/RouteGroupCollector.php +++ b/src/RouteGroupCollector.php @@ -10,7 +10,7 @@ use Psr\Http\Server\RequestHandlerInterface; use function array_filter; -use function count; +use function array_merge; use function in_array; use function is_array; use function is_callable; @@ -183,7 +183,19 @@ public function prepareMiddleware( string|array|callable|MiddlewareInterface|RequestHandlerInterface $middleware, array|string $excludeMiddleware = [], ): MiddlewareInterface { - if (count($excludeMiddleware) === 0 || is_callable($middleware)) { + if (is_string($excludeMiddleware)) { + $excludeMiddleware = [$excludeMiddleware]; + } + + $prependMiddleware = []; + if ($this->middleware !== null) { + $prependMiddleware = $this->middleware; + if (! is_array($prependMiddleware)) { + $prependMiddleware = [$prependMiddleware]; + } + } + + if (is_callable($middleware)) { return $this->middlewareFactory->prepare($middleware); } @@ -191,10 +203,7 @@ public function prepareMiddleware( $middleware = [$middleware]; } - if (is_string($excludeMiddleware)) { - $excludeMiddleware = [$excludeMiddleware]; - } - + $middleware = array_merge($prependMiddleware, $middleware); $middleware = array_filter( $middleware, function (callable|string|MiddlewareInterface|RequestHandlerInterface $item) use ($excludeMiddleware) {