QueryPHP 支持单个导入、批量导入和定义路由文件支持路由规则。
# 路由导入
路由由 Q\router\router 中的 import 方法进行注册,通常我们在 <project>/com/option/router.php 中进行注册路由。
~~~
// 原型 router::import($strRouter, $strUrl, $in = []);
router::import('路由', '请求地址', '扩展参数');
~~~
例子:
~~~
router::import ( 'hello-{what}', 'home://topic/index' );
~~~
访问地址:
~~~
http://<service>/index.php/hello-world
http://<service>/index.php/home/topic/index/what/world
~~~
上面两个地址等效,GET 结果如下:
~~~
Array
(
[app] => home
[c] => topic
[a] => index
[what] => world
)
~~~
> 说明:路由本质实质上利用正则匹配 pathinfo,解析所得到的结果,见下表。
| 项目 | 说明 |
| --- | --- |
| pathinfo | /hello-world |
| 正则 | /^\/hello-(\S+)/ |
# 参数分析
### 路由
| 项目 | 备注 | 正则 |
| --- | --- | --- |
| / | 首页 | / |
| hello | 普通路由 | /hello/ |
| goods-{hello} | 带有参数 | /goods-(\S+)/ |
| goods-{hello}-{world}/{show}-{detail} | 多个参数,规则复杂的路由 | goods-(\S+)-(\S+)/(\S+)-(\S+) |
### 请求地址
基本结构如下:
~~~
home://hello/world?args1=1&arg2=2
~~~
支持例子解析:
| 项目 | 备注 |
| --- | --- |
| home://blog/index?id=1&name=xiao | 应用(home) 控制器(blog) 方法(index) 参数[id=1, name=xiao] |
| blog/index | 应用(默认应用) 控制器(blog) 方法(index) |
| blog | 应用(默认应用) 控制器(blog) 方法(默认方法) |
### 扩展参数
系统将通过扩展参数支持更多功能,见下面:
| 项目 | 备注 |
| --- | --- |
| domain | 支持导入域名,详情见后面 |
| params | url 附加参数 ['args1' => 'hello', 'args2' => 'world' ] |
| where | 参数正则,['hello' => '[0-9]+', 'world' => '[A-Za-z]+'],参数默认解析正则为 \S+ |
| prepend | 插入顺序,一个路由可以多个请求地址,prepend 插入前面优先解析 |
| strict | 使用启用严格匹配,正则结尾会加入 $ 标志 |
| prefix | 定义前缀,分组路由指定前缀会通过这个参数传入数据 |
# 严格匹配模式
QueryPHP 可以通过“扩展参数”中的 strict 来支持严格,也可以通过配置设置全局参数。
~~~
'url_router_strict' => true
~~~
> 说明:扩展参数中的 strict 优先,可以通过这个配置修改全局严格设置。
- 关于 QueryPHP
- 获取 QueryPHP
- 环境要求
- 许可协议 Free
- 执行流程 MVC
- 命名规范 $sName
- 目录结构 DIR
- 单一入口 index.php
- 响应客户端请求 URL
- 命名空间与自动载入 Autoload
- 路由
- 路由导入
- 批量导入
- 参数正则
- 分组定义
- 路由绑定
- 路由域名
- 分层控制器
- 默认和初始化APP
- 默认控制器和方法
- url 模式
- url 生成
- url 伪静态
- url 重写
- url 重定向
- 控制器绑定
- 方法器分层
- 控制器 __init
- 控制器方法交互
- 模板引擎语法
- C变量输出 $sName
- C变量支持函数和方法 $sName|trim
- C快捷输出 ~
- C标签简化 Css & Javascript
- C默认值 eq 三元运算符
- C变量运算符 +-
- 变量递增递减 ++--
- C循环数据 list
- N变量赋值 assign
- N循环数据 list
- N循环数据高级版 lists
- C循环数据 while
- N循环数据 while
- C循环数据 for
- N循环数据 for
- C条件判断 if
- N条件判断 if
- 标签嵌套无限层级
- N循环流程 break & continue
- N使用 PHP 代码
- N包含子模板 include
- J模板引擎 intro
- J条件判断 if
- J循环数据 each
- J变量 & 表达式
- J变量支持函数和方法 hello|test
- J默认值 eq 三元运算符
- J框架前端组件 jquery.queryphp.js
- J前端 CSS 规范
- J前端 JS 规范
- 保护标签自身 tagself
- 数据库
- 数据库配置
- 执行原生 sql 语句
- 数据库事务
- 数据库构造器 prefix
- 数据库构造器 table
- 数据库构造器 forceIndex
- 数据库构造器 where
- 数据库构造器 bind
- 数据库构造器 join
- 数据库构造器 union
- 数据库构造器 orderBy
- 数据库构造器 groupBy
- 数据库构造器 having
- 数据库构造器 distinct
- 数据库构造器 aggregate
- 数据库构造器 limit
- 数据库构造器 forUpdate
- 数据库构造器 columns
- 数据库构造器 reset
- 数据库集合查询
- 数据库查询数据 get
- 数据库查询多条数据 getAll
- 数据库查询单条数据 getOne
- 数据库查询聚合查询 aggregate
- 数据库写入数据 insert
- 数据库写入数据 insertAll
- 配置
- 配置格式
- 惯性配置
- 配置文件
- 读取配置
- 设置配置
- 删除配置
- 日志
- 日志配置参数
- 日志路径
- 日志过滤器
- 日志处理器
- 缓存
- 缓存配置参数
- 缓存路径
- 缓存指定时间
- COOKIE
- COOKIE 配置参数
- 开发调试
- 页面 trace