Yii1.1.x执行流程

 

原文出处:http://www.iprue.com/article/118/

首先是入口文件,即index.php。(以下app代表项目文件夹,yii均代表框架主文件夹)。

载入了配置文件app/protected/config/main.php,这不是必须的。

载入框架基础文件yii/yii.php,这个类只是继承了YiiBase,实质上是载入yii/YiiBase.php。所以以下如果出现一些静 态方法Yii::xxx的,实质也就是YiiBase::xxx。(这个做法也给我们留下了以后想要修改YiiBase类的可能,具体以后再说。)

YiiBase类最主要的功能是注册了自动加载类方法(spl_autoload_register),加载框架要用到所有接口(yii/base/interfaces.php)。

Yii::createWebApplication($config)->run();

用YiiBase::createWebApplication静态方法,创建了CWebApplication(yii/web /CWebApplication.php)类实例,然后调用该父抽象类CApplication(yii/base /CApplication.php)的run方法,并且该方法调用了该类的另一个抽象方法processRequest(),该抽象方法在 CWebApplication里得到了实现。

OK,流程才正式开始……

CWebApplication->processRequest()通过UrlManager->parseUrl() (yii/web/CUrlManager.php),处理被Request(yii/web /CHttpRequest.php)normalizeRequest过的url地址。返回类似controllerID/actionID的地址,供 CWebApplication->runController调兵遣将。

通过CWebApplication->createController()找到相应Controller继承自(yii/web /CController.php)并实例化,再调用CController->run()方法,初始化相应的action,最后执行action 即CController->runActionWithFilters()。这里有几个回调函数:执行 CController->run()前会执行相应Controller的init方法,run action之前执行CWebApplication->beforeControllerAction()和 CController->beforeAction(),run action之后执行CController->afterAction()和 CWebApplication->afterControllerAction。注意先后顺序!

因为不像Cakephp有自动渲染视图的功能,所以Yii渲染视图时,一律通过render或者renderXXX方法,去执行。

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值