设为首页收藏本站
查看: 85|回复: 0

[PHP] Yii框架分析(八)——URL管理组件

[复制链接]

论坛元老

Rank: 6Rank: 6

积分
34274
主题
17031
UID
1347
M币
67
贡献
17176

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


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


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

    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    在我站开通SVIP可同时获得17个站点VIP资源 立即登录 立即注册
    快速回复 返回顶部 返回列表