如何在非Laravel的其他PHP项目中使用Laravel Route路由系统?
非Laravel项目集成Illuminate路由实现方案
1. 安装依赖
首先通过Composer安装路由相关的依赖包:
composer require illuminate/routing illuminate/http illuminate/container
如果需要使用路由缓存、资源路由等进阶功能,额外安装filesystem组件:
composer require illuminate/filesystem
2. 初始化核心实例
在项目的入口文件(通常是public/index.php)中初始化容器、请求和路由实例,如果你之前集成Eloquent时已经创建过Illuminate容器,可以直接复用:
<?php require __DIR__ . '/../vendor/autoload.php'; use Illuminate\Container\Container; use Illuminate\Http\Request; use Illuminate\Routing\Router; // 初始化服务容器,复用现有实例可跳过这步 $container = Container::getInstance(); // 绑定当前请求到容器 $container->instance('request', Request::capture()); // 初始化路由对象 $router = new Router($container);
3. 定义路由
路由定义方式和Laravel原生完全一致,支持所有常用特性:
// 基础闭包路由 $router->get('/', function () { return 'Hello from Illuminate Routing'; }); // 带参数路由 $router->get('/user/{id}', function (int $id) { return "用户ID:{$id}"; }); // 控制器路由 $router->get('/post/{id}', [\App\Controllers\PostController::class, 'show']); // 路由组、中间件、前缀等特性用法不变 $router->middleware('auth')->prefix('admin')->group(function ($router) { $router->get('/dashboard', function () { return '管理后台'; }); });
4. 分发请求返回响应
路由定义完成后,分发请求并输出响应:
// 分发请求得到响应 $response = $router->dispatch($container->make('request')); // 发送响应到客户端 $response->send();
注意事项
- 路由所有用法和Laravel官方文档描述完全一致,不需要额外适配
- 中间件的注册、路由命名、资源路由等进阶功能都可以正常使用,不需要额外配置
- 如果需要使用表单验证、Session等和路由联动的特性,安装对应illuminate系列组件按官方方式配置即可
内容的提问来源于stack exchange,提问作者mostafa khalili
相关产品推荐
相关产品推荐

