setSystemRoutes($coreRoutes); // 3. 加载启用的插件(自动注册路由等) $pluginManager->loadEnabledPlugins(); // 4. 路由依赖注入配置(可选,方便控制器拿依赖) $router->setDependencies([ \Db\Database::class => $db, \App\Core\Router::class => $router, \App\Core\PluginManager::class => $pluginManager, ]); // 5. 注册核心路由到路由器 foreach ($coreRoutes as $route) { [$method, $path, $handler] = $route; $router->add(strtoupper($method), $path, $handler); } // 6. 解析请求路径 $method = $_SERVER['REQUEST_METHOD'] ?? 'GET'; // 兼容处理:确保 REQUEST_URI 包含 PATH_INFO $requestUri = $_SERVER['REQUEST_URI'] ?? '/'; // 去掉查询字符串 if (false !== $pos = strpos($requestUri, '?')) { $requestUri = substr($requestUri, 0, $pos); } // 尝试自动处理子目录部署或伪静态重写 // 如果使用 Apache/Nginx 重写,通常 REQUEST_URI 就是目标路径 // 如果没有重写,可能是 /index.php/some/path $scriptName = $_SERVER['SCRIPT_NAME']; // /index.php if (strpos($requestUri, $scriptName) === 0) { $uri = substr($requestUri, strlen($scriptName)); } else { $uri = $requestUri; } if ($uri === '' || $uri === false) { $uri = '/'; } // 7. 派发路由处理请求 $router->dispatch($method, $uri); exit;