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\phpernote.com\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的一些屬性和方法就可以被使用。