prefix; break; } } $tail = trim($vss->route, '/'); $route_name = $prefix . ($tail === '' ? '' : '/') . $tail; Console::debug('添加路由:' . $route_name); $route = new Route($route_name, ['_class' => $class, '_method' => $method]); $route->setMethods($vss->request_method); self::$routes->add(md5($route_name), $route); } public static function addStaticFileRoute($route, $path) { $tail = trim($route, '/'); $route_name = ($tail === '' ? '' : '/') . $tail . '/{filename}'; Console::debug('添加静态文件路由:' . $route_name); $route = new Route($route_name, ['_class' => __CLASS__, '_method' => 'onStaticRoute'], [], compact('path')); self::$routes->add(md5($route_name), $route); } public function onStaticRoute(array $params) { if (($path = self::$routes->get($params['_route'])->getOption('path')) === null) { ctx()->getResponse()->endWithStatus(404); return false; } unset($params['_route']); $obj = array_shift($params); return new StaticFileHandler($obj, $path); } }