diff --git a/src/Handler.php b/src/Handler.php index c56b40d..c1de173 100644 --- a/src/Handler.php +++ b/src/Handler.php @@ -25,6 +25,12 @@ class Handler implements RequestHandlerInterface protected mixed $format; + /** + * @var array + */ + protected array $middlewares = []; + + /** * @param array|Closure $handler * @param array $parameter @@ -44,6 +50,24 @@ class Handler implements RequestHandlerInterface } + /** + * @param array $middlewares + */ + public function setMiddlewares(array $middlewares): void + { + $this->middlewares = $middlewares; + } + + + /** + * @return array + */ + public function getMiddlewares(): array + { + return $this->middlewares; + } + + /** * @return bool */ diff --git a/src/Router.php b/src/Router.php index 733dec9..e4a5cf4 100644 --- a/src/Router.php +++ b/src/Router.php @@ -179,6 +179,22 @@ class Router $scanner->parse('App'); $this->read_dir_file(APP_PATH . 'routes'); + $this->reset(); + } + + + /** + * @return void + * @throws ReflectionException + */ + public function reset(): void + { + $router = Kiri::getDi()->get(DataGrip::class)->get(static::$type); + $middleware = \Kiri::getDi()->get(MiddlewareManager::class); + foreach ($router->getMethods() as $method) { + $middlewares = $middleware->get($method->getClass(), $method->getMethod()); + $method->setMiddlewares($middlewares); + } } diff --git a/src/RouterCollector.php b/src/RouterCollector.php index f7a7e1c..55273b7 100644 --- a/src/RouterCollector.php +++ b/src/RouterCollector.php @@ -57,6 +57,15 @@ class RouterCollector implements \ArrayAccess, \IteratorAggregate } + /** + * @return Handler[] + */ + public function getMethods(): array + { + return $this->methods; + } + + /** * @return array */