Download the PHP package hehex/hehep-hrouter without Composer
On this page you can find all versions of the php package hehex/hehep-hrouter. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download hehex/hehep-hrouter
More information about hehex/hehep-hrouter
Files in hehex/hehep-hrouter
Package hehep-hrouter
Short Description hehep-hrouter 是一个PHP路由基础组件,支持注释注解,PHP8原生注解,支持分组路由,支持key/value结构存储路由,支持合并路由解析操作,支持路由缓存,快速定位路由,提高匹配效率
License Apache-2.0
Informations about the package hehep-hrouter
hehep-hroute
介绍
hehep-hroute 是一个PHP 路由工具组件
支持注释注解,PHP8原生注解
支持路由分组
支持key/value结构存储路由,快速定位路由,提高匹配效率
支持合并路由解析,提高匹配效率
支持路由缓存
安装
-
gitee下载:
-
github下载:
- 命令安装:
组件配置
路由配置
路由管理器
-
说明
路由管理器:收集路由信息,配置路由请求,管理路由解析器,管理路由缓存,解析url地址,生成url 地址
-
路由管理器操作方式
- 路由器操作方式
路由请求
- 说明
路由请求类:存储路由解析器需要的数据,比如路由请求对象可以提供pathinfo地址,host,method 等数据
默认路由请求类:
WebRouteRequest:常规web路由请求,比如php+nginx 环境下运行web请求
CliRouteRequest:控制台路由请求,比如php脚本环境下运行脚本请求
-
定义路由请求类
- 路由请求使用示例
路由解释器
-
说明
路由解释器类:负责调度规则,解析路由规则,生成后缀,域名等等
路由解析由两部分组成:地址(pathinfo)解析+参数解析
格式:user/list/blog-12-12-12.html,pathinfo:user/list/blog,参数:-12-12-12 -
路由解释器配置
suffix:url 是否加入上后缀,默认值:false,格式:html
domain:url 是否加入域名 地址时是否显示域名,格式:http://www.xxx.cn
mergeRule: 是否合并路由解析,默认值:false,此参数会同步至分组
mergeLen:一次合并的条数,0 表示全部
lazy:是否延迟加载规则,默认值:false -
定义路由解释器类
- 路由解析器使用示例
路由缓存
-
说明
路由缓存类:由于路由规则是动态生成的,所以需要缓存路由规则,以便下次使用
-
路由缓存配置
routeFile:路由文件列表
cacheDir:路由缓存目录
cacheFile:路由缓存文件,如果路由缓存文件未设置,则生成路由缓存文件
timeout:路由缓存过期时间,默认值:0,0 表示不过期 - 路由缓存使用示例
路由定义
说明
基本格式:["uri"=>"\<controller:\w+>/\<action:\w+>","action"=>"
/ ","method"=>"get"]
伪代码: Route::get("路由规则","路由地址");
变量参数:格式<变量名>,<变量名:正则表达式> 或{变量名},{变量名:正则表达式},如\<controller:\w+>
uri:路由规则,即匹配http地址的规则表达式
action:路由地址,即匹配"控制器/操作"的表达式,常用于生成url地址
method:请求类型,多个请求类型逗号或|隔开,目前支持以下请求类型
*(任意类型),GET,POST,PUT,DELETE,PATCH,HEAD
常规路由
变量路由
可选变量路由
-
说明
在变量表达式中末尾带?问号,标识此变量为可选,即可有可无
以下格式可设置为可选变量:
\<id:\d+?>
<id?>
->asParams(["id"=>"\d+?"]) - 示例代码
私有变量路由
-
说明
私有变量格式:<变量名:正则表达式>,变量名以下划线()开头
私有变量规则:私有变量只负责验证,不会出现在解析URL地后的参数里 - 示例代码
默认变量路由
-
说明
提示:带问号(?)可选默认变量值不会现在"路由规则","路由地址"里
-
非可选默认变量
- 带问号(?)可选默认变量
带域名路由
绑定类路由
-
说明
基本格式:完整类路径@方法名
类方法路由只能用于解析uri地址,无法用于生成uri地址 - 示例代码
常用变量表达式
表达式 | 说明 | 示例 |
---|---|---|
\w+ |
由数字、26个英文字母,下划线 | 'user/\<action:\w+>' |
\d+ |
非负整数(正整数 + 0) | 'user/\<id:\d+>' |
[a-z]+ |
26个小写字母 | 'http://\<lang:[z-z]+>.xxx.cn' |
.+ ,.* |
任意字符 | 'user/get\<param:.+>' |
\d{4} |
日期格式 | news/list/\<year:\d{4}>/\<month:\d{2}>/\<day:\d{2}> |
[^\/]+ |
匹配除了'/'以外的字符 | news/search/\<keyword:[^\/]+> |
路由规则参数
- 路由参数集合
参数 | 说明 |
方法名 | 示例 |
---|---|---|---|
domain |
是否域名检测 | asDomain | asDomain(true) |
suffix |
生成URL是否加入后缀 | asSuffix | asSuffix("html") |
method |
请求类型 | asMethod | asMethod("get") |
id |
路由唯一标识 | asId | asId("news") |
params |
"路由规则"变量集合 | asParams | asParams(["id"=>"\d+"]) |
defaults |
默认变量集合 | asDefaults | asDefaults(['lang'=>'en']) |
completeMatch |
是否完全匹配路由规则,默认完全匹配 | asCompleteMatch | asCompleteMatch(false) |
prule |
Url参数配置规则 | asParamsRule | asParamsRule(['pvar'=>'params','class'=>'xxx']) |
- 示例代码
路由分组
-
说明
路由分组目的:集中统一设置参数,提高匹配效率
路由分组规则:子路由参数优先于分组路由参数,即分组设置的参数无法覆盖子路由设置的参数 - 示例代码
设置规则参数
带变量分组
合并路由解析
-
说明
合并解析目的:提高匹配效率
合并原则:只合并相同请求类型的路由
可选参数:支持指定合并的条数 - 示例代码
分组参数同步子路由
参数 | 方法 | 分组路由 | 子路由 | 同步至子路由 | 说明 |
---|---|---|---|---|---|
suffix |
asSuffix() | ✓ | ✓ | ✓ | 统一设置子路由后缀 |
id |
asId() | ✓ | ✓ | ✓ | 统一设置子路由的id前缀,如分组id:admin::,如子路由id:user,最终子路由id:admin::user |
params |
asParams() | ✓ | ✓ | ✓ | 统一设置子路由变量,子路由变量与分组变量合并,并且子路由变量优先 |
prefix |
asPrefix("blog/") | ✓ | ✗ | ✓ | 统一设置子路由action前缀(首字符为"/"的除外),分组prefix:blog/,子路由action:list,最终子路由action:blog/list |
mergeRule |
asMergeRule(5) | ✓ | ✗ | ✗; | 路由规则合并成一条正则表达式进行验证,可以指定一次合并N条 |
域名路由
-
常规域名路由
- 分组域名路由
URL参数解析
分隔符(split)格式
-
说明
基本格式:thread-119781-1.html
-
属性配置
pvar:URL地址参数解析名称,与"路由规则"中URL参数解析名称对应,比如uri:xxx/thread\<hvar:(.*)>,pvar值为:hvar
names:参数项名称,默认值,正则表达式,以及顺序定义.
格式:['status'=>["regex"=>"正则表达式","defval"=>"默认值"]]
格式1:['id','status'=>"默认值",'type']
格式2:['id'=>["regex"=>'\d+',"defval"=>"0"],'status'=>["regex"=>'\d+',"defval"=>"0"],'type']
flag:参数项之间的分隔符,默认是中划线-,比如"thread-122-1-1.html"地址中的"122-1-1"
prefix:参数前缀,默认是中划线-,比如"thread-122-1-1.html"地址中的122前面的中划线-
defval:全局默认值
mode:参数数量类型,fixed:固定参数,dynamic:动态参数 -
固定参数(fixed)URL格式
如设置names=['id','status'=>"0",'type'],
URL参数格式1,如thread-119781-1-1.html,错误格式thread-119781-1.html
生成URL格式1:["id"=>122,"type"=>1],得到的URL:xxxx/thread-122-0-1.html -
动态参数(dynamic)URL格式
如设置names=["id",'status'=>"0",'type']
URL参数格式1:如thread-119781.html,解析后得到的参数$params = ["id"=>119781,"status"=>0];
URL参数格式2:如thread-119781-1.html,解析后得到的参数$params = ["id"=>119781,"status"=>1];
URL参数格式3:如thread-119781-1-1.html,解析后得到的参数$params = ["id"=>119781,"status"=>1,"type"=>1];
生成URL格式1:["id"=>122,"type"=>1],得到的URL:xxxx/thread-122-0-1.html
生成URL格式2:["id"=>122],得到的URL:xxxx/thread-122-0.html
生成URL格式3:["id"=>122,"status"=>1,"type"=>1],得到的URL:xxxx/thread-122-1-1.html -
动态参数模式示例
- 固定参数模式示例
PATHINFO分隔格式
-
说明
基本格式:名称/值1/名称/值2/名称/值3,如:news/get/id/1/status/1
-
属性配置
valueSplit:参数名与值的分隔符,默认"/",如id/1
paramSplit:参数与参数的分隔符,默认"/",如id/1/status/1,id-1/status-1
prefix:参数前缀,默认""
names:参数项名称,默认值,正则表达式,以及顺序定义.
格式:['status'=>["regex"=>"正则表达式","defval"=>"默认值"]]
格式1:['id','status'=>"默认值",'type']
格式2:['id'=>["regex"=>'\d+',"defval"=>"0"],'status'=>["regex"=>'\d+',"defval"=>"0"],'type']
defval:全局默认值 - 示例代码
Url地址生成
常规生成URL
生成当前访问URL
生成当前访问URL,必须先解析当前路由规则
由路由标识生成URL
生成带后缀URL
生成带域名URL
生成带锚点URL
restful路由
-
常规格式
-
变量格式
-
注解常规格式
- 注解变量格式
注解路由
-
说明
注解器:hehe\core\hroute\annotation\Route
注解类:相当于创建一个分组路由,注解类方法相当于在分组路由注册子路由 -
注解类
- 注解类方法