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