diff --git a/HttpServer/Route/Node.php b/HttpServer/Route/Node.php index d536602e..5519ddfa 100644 --- a/HttpServer/Route/Node.php +++ b/HttpServer/Route/Node.php @@ -444,15 +444,19 @@ class Node extends Application */ private function each($array, $_temp) { - if (empty($array)) { + if (!is_array($array)) { return $_temp; } foreach ($array as $class) { - if (!is_array($class)) { - $_temp[] = Snowflake::createObject($class); - } else { + if (is_array($class)) { $_temp = $this->each($class, $_temp); + continue; } + + if (!class_exists($class)) { + continue; + } + $_temp[] = Snowflake::createObject($class); } return $_temp; } diff --git a/HttpServer/Route/Router.php b/HttpServer/Route/Router.php index 2aff33f8..1d5215d6 100644 --- a/HttpServer/Route/Router.php +++ b/HttpServer/Route/Router.php @@ -38,8 +38,20 @@ class Router extends Application implements RouterInterface public $methods = ['get', 'post', 'options', 'put', 'delete', 'receive']; + public $middleware = null; + public $useTree = false; + + /** + * @param Closure $middleware + */ + public function setMiddleware(\Closure $middleware): void + { + $this->middleware = $middleware; + } + + /** * @throws ConfigException * 初始化函数路径 @@ -291,9 +303,10 @@ class Router extends Application implements RouterInterface } $name = array_column($this->groupTacks, 'middleware'); - if (!empty($name) && $name = array_filter($name)) { - $node->bindMiddleware($name); + if (!empty($this->middleware) && $this->middleware instanceof \Closure) { + array_unshift($name, $this->middleware); } + $node->bindMiddleware($name); $options = array_column($this->groupTacks, 'options'); if (!empty($options) && is_array($options)) {