Yii框架是一个纯面向对象的框架,这个框架在运行的时候,也就是一个应用被访问的时候,需要创建许多对象,这些对象再调用许多相关方法,从而完成一次web请求。
这个Yii::app() 是第一个被创建的对象,由这个对象调用相关方法,完后后续工作。
Yii::app()主要负责一些全局性的功能模块,比如Yii::app()->getUser()返回的是CWebUser实例(用于表达当前用户的验证信息)。因为CWebApplication继承CComponent,所以Yii::app()->getUser()也可以写作Yii::app()->user (参见关于CComponent的说明,这是Yii的基石)。
Yii::app()是类CWebApplication的实例,因此这个类(包括继承类)能被使用的属性和方法,这个对象都可以使用(有些方法是系统运行的核心方法,不建议直接调用)。例如 CWebApplication 里边有一个方法 getLayoutPath() 获得布局路径,则我们可以这样:
echo Yii::app()->getLayoutPath(); // 输出 D:\www\hh.hhsy.cc\protected\views\layouts
另外,CWebApplication 和其父类 CApplication 为系统定义了好多可以使用的组件,db、user、session、authManager、request 等等还有其他的不一一列举。
我们可以通过Yii::app()使用以上组件,例如:
echo Yii::app()->request->url; //可以获得当前请求的相对url地址( /index.php?r=user/login )
说明:
Yii::app()->request; 会创建request类对象
Yii::app()->request->url; 会调用类request里边的属性信息,这个属性没有,或调用父类的魔术方法__get间接调用geturl()方法
Yii::app()->user; 会调用用户验证组件(CWebUser),CWebUser的一些属性和方法就可以被使用。