二、yii的入口与app应用实例(Yii::app())
2014-08-07 16:39
330 查看
那么在浏览器中输入 localhost/bootstrap/index.php时 yii都做为我们做了一些什么咧
首先 我们来看index.php文件,这是yii应用的唯一入口
那么createWebApplication方法主要是做写什么事情咧,我们去Yii的类里面看看
我们看到,Yii是调用了自身的另外一个静态方法createApplication,并且传递了配置文件参数$config
我们接着往下看,发现Yii在createApplication方法里面返回了一个
CWebApplication 类的实例化对象,并在构造函数时传递了配置文件参数
似乎想知道发生了什么,还得进入
CWebApplication的构造函数里面看看,那么我们去看看
我们看到,在构造函数的第一步,调用了Yii的setApplication方法,并传递了实例化出来的CWebApplication对象,我们进入Yii的这个静态方法可以看到,Yii将创建出来的app对象赋值给了Yii的私有的静态属性$_app;
在Yii中我们又看到了这样的公共静态方法,在app()方法中,返回了它的私有静态属性$_app也就是CWebApplication对象
所以在接下来的页面的任何地方,我们都可以调用Yii::app()来访问CWebApplication对象,并且它是个单例对象。
首先 我们来看index.php文件,这是yii应用的唯一入口
//定义yii的引导文件,里面定义了一个叫Yii的类 $yii=dirname(__FILE__).'/../yii/framework/yii.php'; //定义web应用的配置文件 $config=dirname(__FILE__).'/protected/config/main.php'; //开发模式下开启debug调试 // remove the following lines when in production mode defined('YII_DEBUG') or define('YII_DEBUG',true); // specify how many levels of call stack should be shown in each log message defined('YII_TRACE_LEVEL') or define('YII_TRACE_LEVEL',3); //导入Yii的引导文件 require_once($yii); //创建应用并初始化配置文件,运行应用 Yii::createWebApplication($config)->run();
那么createWebApplication方法主要是做写什么事情咧,我们去Yii的类里面看看
我们看到,Yii是调用了自身的另外一个静态方法createApplication,并且传递了配置文件参数$config
public static function createWebApplication($config=null) { return self::createApplication('CWebApplication',$config); }
我们接着往下看,发现Yii在createApplication方法里面返回了一个
CWebApplication 类的实例化对象,并在构造函数时传递了配置文件参数
public static function createApplication($class,$config=null) { return new $class($config); }
似乎想知道发生了什么,还得进入
CWebApplication的构造函数里面看看,那么我们去看看
public function __construct($config=null) { //将创建的webapp实例赋值给Yii的静态属性$app,在整个进程中可以使用Yii::app()来使用这个应用对象,这是一个单例模式 Yii::setApplication($this); ...... }
我们看到,在构造函数的第一步,调用了Yii的setApplication方法,并传递了实例化出来的CWebApplication对象,我们进入Yii的这个静态方法可以看到,Yii将创建出来的app对象赋值给了Yii的私有的静态属性$_app;
public static function setApplication($app) { if(self::$_app===null || $app===null) self::$_app=$app; else throw new CException(Yii::t('yii','Yii application can only be created once.')); }
在Yii中我们又看到了这样的公共静态方法,在app()方法中,返回了它的私有静态属性$_app也就是CWebApplication对象
public static function app() { return self::$_app; }
所以在接下来的页面的任何地方,我们都可以调用Yii::app()来访问CWebApplication对象,并且它是个单例对象。
相关文章推荐
- Yii框架文摘之二yii的入口与app应用实例(Yii::app())
- Kivy crash 中文教程 实例入门 1. 第1个应用 Kivy App (Making a simple App)
- phonegap整合调用dwr实例,web应用轻松变身移动APP
- 对Yii2中 yii\web\User的理解,和自建的app\models\User(基础版),frontend\models\User的应用原理
- android 分发平台的开发(相当于一个应用平台的窗口,其它应用把入口放在了一个app里)
- Yii2.0数据库查询应用实例(一)
- PX4应用实例3:px4_simple_app
- Android应用App更新实例详解
- 【转】App应用内搜索:移动搜索的新入口
- iOS开发人员必备App开发工具 ifunbox 支持iPhone, iPad和iPod Touch的文件及应用管理神器 使用实例
- Yii中的CComponent应用实例
- App应用在桌面创建多个入口
- cocos2d-x打飞机实例总结(一):程序入口分析和AppDelegate,Application,ApplicationProtocol三个类的分析
- 第一个 Yii 应用实例
- 桌面组件Appwidget的应用实例以及导入第三方jar包的问题解决
- YII Framework框架使用YIIC快速创建YII应用之migrate用法实例详解
- Kivy crash 中文教程 实例入门 1. 第1个应用 Kivy App (Making a simple App)
- 应用商店App描述秘籍:16个实例讲述
- app.config自定义应用程序配置文件介绍与应用实例
- Yii2- 应用组件Yii::$app 主要可用属性