Yii框架文摘之二yii的入口与app应用实例(Yii::app())
2014-07-08 21:11
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对象,并且它是个单例对象。 http://my.oschina.net/lonxom/blog/168227
首先 我们来看index.php文件,这是yii应用的唯一入口
01 | //定义yii的引导文件,里面定义了一个叫Yii的类 |
02 | $yii =dirname( __FILE__ ). '/../yii/framework/yii.php' ; |
03 | //定义web应用的配置文件 |
04 | $config =dirname( __FILE__ ). '/protected/config/main.php' ; |
05 | //开发模式下开启debug调试 |
06 | // remove the following lines when in production mode |
07 | defined( 'YII_DEBUG' ) or define( 'YII_DEBUG' ,true); |
08 | // specify how many levels of call stack should be shown in each log message |
09 | defined( 'YII_TRACE_LEVEL' ) or define( 'YII_TRACE_LEVEL' ,3); |
10 | //导入Yii的引导文件 |
11 | require_once ( $yii ); |
12 | //创建应用并初始化配置文件,运行应用 |
13 | Yii::createWebApplication( $config )->run(); |
我们看到,Yii是调用了自身的另外一个静态方法createApplication,并且传递了配置文件参数$config
1 | public static function createWebApplication( $config =null) |
2 | { |
3 | return self::createApplication( 'CWebApplication' , $config ); |
4 | } |
1 | public static function createApplication( $class , $config =null) |
2 | { |
3 | return new $class ( $config ); |
4 | } |
1 | public function __construct( $config =null) |
2 | { |
3 | //将创建的webapp实例赋值给Yii的静态属性$app,在整个进程中可以使用Yii::app()来使用这个应用对象,这是一个单例模式 |
4 | Yii::setApplication( $this ); |
5 | ...... |
6 | } |
1 | public static function setApplication( $app ) |
2 | { |
3 | if (self:: $_app ===null || $app ===null) |
4 | self:: $_app = $app ; |
5 | else |
6 | throw new CException(Yii::t( 'yii' , 'Yii application can only be created once.' )); |
7 | } |
1 | public static function app() |
2 | { |
3 | return self:: $_app ; |
4 | } |
相关文章推荐
- 二、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 主要可用属性