lartrix/thinkphp-route-priority
Composer 安装命令:
composer require lartrix/thinkphp-route-priority
包简介
A ThinkPHP 8 route priority patch that prevents generic and prefix routes from shadowing exact static routes.
README 文档
README
这个 Composer 包用于修复 ThinkPHP 8 路由的声明顺序遮挡问题:
/path/<id>写在/path/you前面时,不再抢先匹配/path/you/path写在/path/you前面时,不再因为非完整匹配抢先命中/path/you- 同等优先级的动态规则仍保持原声明顺序
安装
composer require lartrix/thinkphp-route-priority
如果希望安装或更新 Composer 依赖后自动刷新 ThinkPHP 服务发现,请在宿主项目的 composer.json 增加:
{
"scripts": {
"post-autoload-dump": [
"@php think service:discover"
]
}
}
之后执行 composer require lartrix/thinkphp-route-priority 时会自动生成 vendor/services.php,无需再手动执行 php think service:discover。
如果你的项目没有自动发现服务,也可以手动在 app/provider.php 中绑定:
<?php return [ 'route' => \Lartrix\ThinkPHPRoutePriority\Route::class, \think\Route::class => \Lartrix\ThinkPHPRoutePriority\Route::class, ];
使用
安装并发现服务后,原来的路由文件无需改写:
use think\facade\Route; Route::get('/path/<id>', 'index/read'); Route::get('/path/you', 'index/you'); Route::get('/path', 'index/path');
访问 /path/you 时会优先选择静态且更具体的 /path/you,不会被前面的 /path/<id> 或 /path 覆盖。
工作方式
包会把 ThinkPHP 容器里的 route 服务替换为自定义 Route,并让默认域名、域名路由、普通分组在匹配前按“更具体的规则优先”排序:
- 静态片段更多的规则优先;
- 动态变量更少的规则优先;
- 路径更长、更具体的规则优先;
- 同等优先级保持原声明顺序。
验证
在本包目录运行:
composer test
注意
这个补丁面向 ThinkPHP topthink/framework:^8.0。如果你的项目已经自定义绑定了 route 服务,请合并本包的 Route 继承逻辑,或确保最终绑定到 Lartrix\ThinkPHPRoutePriority\Route。
统计信息
- 总下载量: 0
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 2
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2026-07-03