首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

深入理解 Yii 框架核心組件 Yii::app()

     編輯:PHP 相關知識

深入理解 Yii 框架核心組件 Yii::app()

Yii::app() 是 Yii 1.x 中贯穿整個請求生命周期的核心單例對象(Yii 2.x 對應 Yii::$app)。本文詳細解析其角色、常用組件訪問方式及底層原理。

核心定位

  • 類型:CWebApplication 實例(繼承自 CApplication → CComponent)
  • 創建時機:入口腳本 Yii::createWebApplication($config)->run() 時
  • 職責:全局配置管理、組件容器、請求分發入口

常用組件快速訪問

訪問方式對應組件說明
Yii::app()->userCWebUser當前用戶身份驗證信息(等同 getUser())
Yii::app()->requestCHttpRequest封裝 $_GET/$_POST/$_COOKIE/$_SERVER 等
Yii::app()->sessionCHttpSessionSession 管理
Yii::app()->dbCDbConnection數據庫連接(ActiveRecord 依賴)
Yii::app()->authManagerCAuthManagerRBAC 權限管理
Yii::app()->getLayoutPath()方法調用獲取佈局文件路徑

魔術方法機制

得益於 CComponent 的 __get()/__set():

// 以下等價
Yii::app()->request->url;
Yii::app()->getRequest()->getUrl();

// 組件懶加載:首次訪問時才實例化
Yii::app()->user; // 內部調用 getUser() 創建 CWebUser 實例

實戰示例

// 獲取當前請求相對 URL
$currentUrl = Yii::app()->request->url; // /index.php?r=user/login

// 判斷用戶是否登錄
if (!Yii::app()->user->isGuest) {
    $uid = Yii::app()->user->id;
    $name = Yii::app()->user->name;
}

// 設置全局頁面標題
Yii::app()->name = '我的應用';

Yii 2.x 對應關係

  • Yii::app() → Yii::$app(Application 實例)
  • 組件訪問方式不變:Yii::$app->user、Yii::$app->request、Yii::$app->db
  • 配置從 protected/config/main.php 移至 config/web.php / config/console.php

注意事項

  • 核心組件(request、session、db 等)通常已預配置,無需手動實例化。
  • 避免在組件初始化前(如配置文件中)調用 Yii::app()。
  • 自定義組件需在配置 components 節點註冊,始可通过 Yii::app()->compName 訪問。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved