diff --git a/src/RouterCollector.php b/src/RouterCollector.php index b7831e9..8aa113c 100644 --- a/src/RouterCollector.php +++ b/src/RouterCollector.php @@ -8,6 +8,7 @@ namespace Kiri\Router; use Closure; use Kiri\Router\Base\NotFoundController; use Kiri\Router\Constrict\RequestMethod; +use Psr\Http\Server\MiddlewareInterface; use ReflectionException; use Throwable; use Traversable; @@ -232,11 +233,20 @@ class RouterCollector implements \ArrayAccess, \IteratorAggregate $attributes = $reflect->getMethod($method)->getAttributes(Annotate\Middleware::class); foreach ($attributes as $attribute) { - if (!in_array($attribute->getName(), $response)) { - $response[] = $attribute->getName(); + /** @var Annotate\Middleware $instance */ + $instance = $attribute->newInstance(); + + $data = $instance->middleware; + if (is_string($data)) { + $data = [$data]; + } + + foreach ($data as $middleware) { + if (!in_array($middleware, $response)) { + $response[] = $middleware; + } } } - return $response; }