Yii源码分析——2、组件化与模块化

来源:互联网 发布:申报教学软件 编辑:程序博客网 时间:2024/05/21 17:02

2.1、框架加载和运行流程


Yii框架加载和运行流程共分4个阶段(也许看着有点吓人,木有关系,我们先知道一个大概):

Step1:WebApp初始化与运行

1.1、       加载YiiBase.php,安装autoload方法;加载用户的配置文件;

1.2、       创建WebApp应用,并对App进行初始化,加载部分组件,最后执行WebApp

Step2:控制器初始化与运行

2.1、       加载request组件,加载Url管理组件,获得路由信息route=ControllerId/ActionId

2.2、       创建出控制器实例,并运行控制器

Step3:控制器初始化与运行

3.1、       根据路由创建出Action

3.2、       根据配置,创建出该Action的Filter;

3.3、       执行Filter和Action

Step4:渲染阶段

4.1、       渲染部分视图和渲染布局视图

4.2、       渲染注册的javascript和css


2.2、YiiBase静态类

         YiiBase为YII框架的运行提供了公共的基础功能:别名管理与对象创建管理。

在创建一个php的对象时,需要先include这个类的定义文件,然后再new这个对象。在不同环境下(开发环境/测试环境/线上环境),apache的webroot路径的配置可能不一样,所以这个类的定义文件的全路径就会不同,Yii框架通过YiiBase的别名管理来解决了这个问题。

在创建对象时,需要导入对应类的定义,经常需要使用这5个函数:include()、include_once()、require()、require_once()、set_include_path()。Yii通过使用YiiBase::import()来统一解决这个问题。下图描述了YiiBase提供“别名管理与对象创建管理”的工作原理:
。。。。。