首页 > PHP资讯 > PHP培训技术 > ThinkPHP2.1版本URL路由规则对比2.0版本的变更

ThinkPHP2.1版本URL路由规则对比2.0版本的变更

PHP培训技术
ThinkPHP 2.1 路由

ThinkPHP 2.1 版本(包括 2.1RC 版本)启用了全新的 URL 路由定义规则,与 2.0
本版相比,有两个方面的区别:

路由配置方式:支持 routes.php 文件配置与配置文件 Config.php 中使用
URL_ROUTE_RULES 选项进行配置
路由配置规则。

另外在 2.1 版本中,还解决了路由名称不能使用大写英文字符的 bug

routes.php 文件配置

ThinkPHP 2.1 版本路由规则做了较大改动,原规则:




  1. return array(
  2. // 常规路由
  3. '路由名称'=>array('模块名称', '操作名称', '参数定义', '额外参数'),

  4. // 泛路由
  5. '路由名称@'=>array(
  6. array('路由匹配正则', '模块名称', '操作名称', '参数定义', '额外参数'),
  7. ),
  8. )

变更为:




  1. return array(
  2. // 常规路由
  3. array('路由名称','[分组/]模块/操作名', '路由对应变量','额外参数')

  4. // 泛路由
  5. array('正则定义','[分组/]模块/操作名', '路由对应变量','额外参数')
  6. )

路由例子

前面2.0版本中
ThinkPHP路由使用 与 ThinkPHP泛路由 两文中的路由例子,对应 2.1 版本中变更如下:




  1. return array(
  2. // 常规路由
  3. array('product','Products/show', 'category,product_id', 'status=1')
  4. // 解析到分组
  5. array('product2','Admin/Products/show', 'category,product_id', 'status=1')

  6. // 泛路由
  7. array('/^product/(d+)/(d+)$/is','Products/archive', 'year,month')
  8. )

可以看出,定义规则做了一定的变更,其中泛路由中,正则定义匹配从 APP_NAME
后开始而不是像 2.0
版本从路由名后开始匹配,如下红色部分:

http://www.phplo.com/index.php/product/2010/10

另外增加了PHP正则修正符
i(忽略大小写)和 s(将字符串视作一行,换行符作为普通字符匹配),这个是具体情况是否需要,关于正则表达式更多信息参见《PHP
正则表达式》。
Config.php 文件配置

除了可以在 routes.php 文件进行路由配置外,也可以直接在配置文件
Config.php 中使用 URL_ROUTE_RULES 项目进行设置,定义规则一致:




  1. 'URL_ROUTE_RULES' => array(
  2. array('product','Products/show', 'category,product_id', 'status=1')
  3. array('/^product/(d+)/(d+)$/is','Products/archive', 'year,month')
  4. ),

如果有 routes.php 文件配置,将会优先使用
routes.php 文件配置中的路由定义。

总的来说,ThinkPHP 2.1
版本的路由配置在配置规则上显得更加统一简练,同时也提供了在配置文件 Config.php 中直接配置路由。

PHP培训技术

本文由欣才IT学院整理发布,未经许可,禁止转载。
支持5不支持0