/** * 设置路由 * * @param array $router */ public static function set(array $router) { if (self::$modules_status == 0) { self::$modules_status = 1; } if (Base::hasMatched()) { return; } // 匹配前缀 $prefix = strval(array_get($router, 'prefix', '')); if ($prefix === "") { $prefix = self::$prefix; } if ($prefix !== Base::getPrefix()) { return; } // 匹配控制器 $controllers = array_get($router, 'controllers', []); if (!is_array($controllers) || empty($controllers)) { throw new \InvalidArgumentException("路由配置有误,'controllers'的值必须是非空数组"); } $controller = strval(array_get($controllers, Base::getController(), '')); if (empty($controller)) { return; } // 处理命名空间 $namespace = strval(array_get($router, 'namespace', '')); self::handleConfigNamespace($namespace, $prefix); // 获取中间件,延迟处理 - 需要先加载其他模块才能处理中间件 $middleware = array_get($router, 'middlewares', []); Http\Middleware\QpMiddleware::handleConfigMiddleware($middleware, $namespace); Base::saveRouterData(['namespace' => $namespace, 'controller' => $controller, 'middleware' => $middleware]); Base::match(); }