1. Yii源码阅读笔记 - 路由解析

    概述

    Yii框架的路由解析功能由核心组件urlManager来完成。路由的形式有两种:

    • get:通过URL中查询字符串(query string)参数r来指定路由,如:r=controllerID/actionID
    • path:直接通过URL来指定,如:/controllerID/actionID

    默认使用get路由形式。由于Yii中controller类命名和action方法都是按照规则命名的,而路由也是按照规则来匹配的,所以完全可以不用额外配置urlManager。

    若需要使用path方式,则可如下配置:

    "components" => array(
        'urlManager' => array(
            'urlFormat' => 'path',
            'rules' => array(
                ...
            ),
    ),
    

    进一步说明可参考RESTful API设计的一点经验一文。

    分析

    在“请求处理基本流程”一篇可以看到Yii框架路由解析流程的入口在类CWebApplication的processRequest方法中:

    $route=$this->getUrlManager()->parseUrl($this->getRequest());
    

    其中getUrlManager方法定义于类CApplication中,作用是初始化获取URL管理组件(ID为urlManager),实现如下:

    public …
    标签: PHP Yii 笔记 总结
  2. Yii源码阅读笔记 - 请求处理基本流程

    对于Web框架,我认为其主要有三点作用:

    1. 提供多人协作的基本规范
    2. 避免重复造轮子
    3. 开发者只需关注业务逻辑,脏活(如:基本的安全防范、兼容问题)Web框架都已完成并提供设计良好的API

    但代价是学习成本 - 为了尽可能发挥Web框架的优势,需要花一些阅读文档,甚至是框架源码(特别是文档缺乏或者文档写得垃圾的),然后经过几次项目实践,一切才能了然于胸。

    喏,为了在工作中更好地使用、避免误用Yii框架,大致阅读了Yii框架的部分代码,然后有了这个系列的笔记。


    深入学习一个Web框架,首先要理解的是请求处理流程。对于PHP而言,处理流程也即包含了应用的初始化过程,如加载配置、初始化组件等。请求处理流程中最核心的应该是路由解析和分发,此外可能还有过滤器处理、事件处理等,直到请求处理进入具体的Controller和Action。响应生成、过滤等也可以关注。


    基于Yii框架的工程目录结构大致如下所示:

    Yii-Project-Structure

    • index.php是应用的入口
    • protected目录是存放动态脚本的地方
      • components子目录存放各种组件类
      • configs存放应用的配置文件
      • controllers存放Controller类文件
      • models存放Model类文件
      • runtime存放一些应用生成的临时文件或者缓存文件,如Smarty编译好的模板、日志文件
      • views存放View模板文件
    • static目录存放静态文件,如CSS、JS、图片等 …
    标签: PHP Yii 笔记 总结

Page 2 / 2