定制 lartrix/thinkphp-route-priority 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

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,并让默认域名、域名路由、普通分组在匹配前按“更具体的规则优先”排序:

  1. 静态片段更多的规则优先;
  2. 动态变量更少的规则优先;
  3. 路径更长、更具体的规则优先;
  4. 同等优先级保持原声明顺序。

验证

在本包目录运行:

composer test

注意

这个补丁面向 ThinkPHP topthink/framework:^8.0。如果你的项目已经自定义绑定了 route 服务,请合并本包的 Route 继承逻辑,或确保最终绑定到 Lartrix\ThinkPHPRoutePriority\Route

统计信息

  • 总下载量: 0
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 2
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2026-07-03

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固