🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# 创建路由 创建一个基于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)