Yii urlManager

理组件主要提供2个功能:
1、根据用户输入的url,解析出处理这个请求的路由——由哪个Controller的哪个Action来处理,同时将url中的部分参数添加到$_GET参数中。在每个web框架中都需要一个这样的组件来进行路由分发的工作。
2、根据路由和参数数组创建出url。在视图层可以对url进行硬编码,即直接写死url地址,但是这往往缺乏灵活性,为后期的维护带来成本。
array(
‘components’=>array(
‘urlFormat’=>’path’,
‘rules’=>array(
‘/art/<cate:w+>/<key:d+>/<id:d+>/<p:d+>’=>’article/<cate>/<key>’,
‘post/<id:d+>/<title:.*?>’=>’post/view’,
‘<controller:w+>/<action:w+>’=>'<controller>/<action>’,
),
),
);
如上是一个url管理组件的配置,一共有3条规则。下图以第一条规则为例,说明了url解析和url创建的2个功能。对于每个路由规 则,CUrlManager都会创建一个CUrlRule对象来处理这条规则对应的这个2个功能,所以说有一条规则就会有几个CUrlRule对象。所以 CUrlRule才是url管理的核心所在,接下来分析CUrlRule的工作原理。

Posted Image

每条url路由规则由一个CUrlRule对象来进行处理,接下来以如下路由规则为例:’/art/<cate:w+>/<key: d+>/<id:d+>/<p:d+>’=>’article/<cate>/<key& gt;’,说明url解析和url创建的处理过程。每个CUrlRule对象处理url的过程可以分为3个阶段:
1、 初始化CUrlRule对象
在CUrlRule对象的构造函数中,会初始化6个重要的成员变量:

Resized to 90% (was 739 x 230) – Click image to enlargePosted Image

2、 解析url
解析url的工作分3步走:a、根据pattern规则,解析出url中的各个字段;b、根据references对路由中的引用字段进行替换;c、将params中指定的字段添加到$_GET数组中
3、 创建url
创建url的工作分3步走:a、根据routePattern规则,解析出输入的路由中各个字段;b、将输入的参数数组和上一步解析的数组进行合并;c、用合并后的数组对template进行替换

Resized to 91% (was 734 x 494) – Click image to enlargePosted Image

本文固定链接: http://www.ccsbbs.com.cn/archives/6747.html | 极限手指

该日志由 极限手指 于2013年05月25日发表在 PHP, YII 分类下, 你可以发表评论,并在保留原文地址及作者的情况下引用到你的网站或博客。
原创文章转载请注明: Yii urlManager | 极限手指

Yii urlManager:等您坐沙发呢!

发表评论

您必须 [ 登录 ] 才能发表留言!