yii框架学习

2 篇文章 0 订阅
1.大概过程

application __construct  

设置当前运行实例

->获取配置参数

->设置basepath

->preinit

->加载核心组件 registerCoreComponents

->处理加载config中的preload

->初始化init()->加载CHttpRequest组件->run() processRequest()处理请求

->分析路由,创建controller实例执行runController

->runAction->render()渲染视图


2.yii 加载运行流程分析

//单入口文件

require __DIR__ . '/../protected/yii.php'; //包含Yii框架,引入全局类Yii

Yii::createWebApplication($config)->run(); //由配置文件建立应用实例,运行Yii::app()

//yii.php 创建应用

public static function createWebApplication($config=null) {
       if ($_SERVER["REQUEST_METHOD"] == "OPTIONS") {
        ...
       } else {
           return self::createApplication('CWebApplication',$config);
       }
   }


public static function createApplication($class,$config=null) {

// ...

//确定当前要加载的模块
       $module = self::_getModule($config["modules"]);

        //设置module的路径别名
           Yii::module($config["name"]);
           Yii::setPathOfAlias("module", sprintf("%s/modules/%s/", $rootPath, $module));

       //创建CWebApplication
       $app = parent::createApplication($class, $config);

       return $app;
   }

//YiiBase.php

public static function createApplication($class,$config=null)
{
return new $class($config);
}

//执行new CWebApplication()的时候,会将配置信息数组$config传递给CWebApplication创建出对象,并执行对象的run() 方法启动

//CWebApplication类的继承关系
CWebApplication -> CApplication -> CModule -> CComponent  

//$config先被传递给CApplication的构造函数

public function __construct($config=null)

//将自身实例赋给Yii的静态成员$_app

Yii::setApplication($this) 

//设置了路径别名application和webroot

Yii::setPathOfAlias('application',$this->getBasePath());
Yii::setPathOfAlias('webroot',dirname($_SERVER['SCRIPT_FILENAME']));

//注册核心组件

$this->registerCoreComponents();

//Component通过CModule __get()和__set()方法访问,在访问时由CModule来创建

$this->configure($config);

$this->preloadComponents();

$this->init();

public function run() 

//cwebapplication->processRequest //处理请求

$this->processRequest();

//由url得到route找到控制器/创建动作

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

public function runController($route)

//创建controller实例,并运行控制器

if(($ca=$this->createController($route))!==null)

//最后执行页面请求

$controller->run($actionID);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值