# 創建路由
創建一個基于XPHP的程序,第一步是創建路由。
所有的路由文件都位于 `/Var/Route/` 目錄下,使用Json格式。
啟動時,XPHP會遍歷這個目錄下的所有文件,把他們當作路由加載。
您可以先看一下樣例路由:
```Json
[
{
"base" : "/",
"rule" : {
"index.html" : "Home.IndexController:index",
"hi/{hi}" : "Home.IndexController:Wow"
}
},
{
"base" : "/test/",
"rule" : {
"auto/{Action}.do" : "Home.TestController:Action",
"php/{Controller}.{Action}.php" : "Home.Controller:Action",
"python/{Application}.{Controller}.{Action}.php" : "Application.Controller:Action"
}
}
]
```
由于每一個路由規則都需要一次正則匹配,為了提高效率,XPHP路由引入了`Base`也就是路由根的概念。路由根不使用正則,只用簡單的逐字匹配功能,但是一旦沒有匹配路由根,那么下面的規則就會跳過不匹配。
這不但使得路由更美觀,也使得效率提高。
## 分析
一個路由文件,可以有多個根節點。例如例子中,一個是`/`,一個是`/test/`。
每個路由文件,都是一個索引數組。每一項,有兩個屬性。`base`對應根節點,`rule`對應規則。
每個`rule`規則是一個關聯數組,鍵是匹配的路由語句,值是對應的應用、控制器、方法名稱。
路由語句,就是相對于根路徑的路徑。在這個路徑中,可以使用正則,也可以使用`{變量名稱}`進行匹配,在控制器中可以通過接受一個基于變量名稱的關聯數組,獲取匹配到的值。
`rule`的值的格式:`應用名.控制器:方法`。
如果路由語句中匹配了`{Application}`,`{Controller}`,`{Action}`,將會分別覆蓋掉應用名、控制器、方法。
> 編者注:由于剛開始寫文檔,可能寫得不那么通俗,也有點亂,麻煩大家幫忙改進,可以發到 [我郵箱](mailto:xtl@xtlsoft.top) ,有問題可以 GitHub [@xtlsoft](https://github.com/xtlsoft)