/** * 处理中间件 * * @throws \ErrorException */ public static function handleMiddleware() { if (self::$handle_status != 0) { throw new \ErrorException("非法的QP框架使用方法 - 仅仅只能处理一次中间件,并且由框架底层自动处理!"); } foreach (\Qp\Kernel\Http\Router\QpRouter::getMatchedData()['middleware'] as $middleware) { self::$response_message = ""; self::$response_status = 200; (new $middleware())->handle(); if (self::$handle_status == 2) { if (json_decode(self::$response_message, true) != []) { \Qp\Kernel\Response::response()->setContentType('application/json'); } \Qp\Kernel\Response::send(self::$response_message, self::$response_status); exit; } } self::$handle_status = 3; }
/** * 处理用户请求的路由 * 匹配失败直接抛出异常,成功则返回设置过的Phalcon路由对象 * * @return \Phalcon\Mvc\Router Phalcon的路由对象 * @throws \ErrorException */ private function handleRouter() { require_once QP_APP_PATH . "routers.php"; if (QR::hasMatched() == false) { echo (new \App\Controllers\IndexController())->notFoundAction(); exit; } $matched_router_data = QR::getMatchedData(); $ns = $matched_router_data['namespace']; $ctrl = $matched_router_data['controller']; $m = QR::getMethod(); if (!method_exists($ns . "\\" . $ctrl . "Controller", $m . "Action")) { echo (new \App\Controllers\IndexController())->notFoundAction(); exit; } $router = new \Phalcon\Mvc\Router(); $router->setDefaults(["namespace" => $ns, "controller" => $ctrl, "action" => $m]); return $router; }