第一個應用雖簡單,但 Yii 提供龐大類別庫,若不了解核心架構無從下手。本文系統介紹 CWebApplication、應用組件、生命週期、CController 四大支柱。
應用為 CWebApplication 單例,透過 Yii::app() 全域存取。可透過配置檔或繼承自訂。
<?php
return array(
'name' => 'Yii Framework',
'defaultController' => 'site',
'components' => array(
'cache' => array(
'class' => 'CMemCache',
'servers' => array(
array('host'=>'server1', 'port'=>11211, 'weight'=>60),
array('host'=>'server2', 'port'=>11211, 'weight'=>40),
),
),
),
);
於入口腳本載入:Yii::createWebApplication($configFile)。
功能模組化,透過 components 配置靈活替換。常用核心組件:
| 組件 ID | 類別 | 用途 |
|---|---|---|
| db | CDbConnection | 資料庫連線 |
| cache | CCache | 資料快取(需指定具體類別) |
| urlManager | CUrlManager | URL 解析與建立 |
| request | CHttpRequest | 用戶請求資訊 |
| session | CHttpSession | Session 管理 |
| user | CWebUser | 用戶身份識別 |
| errorHandler | CErrorHandler | 錯誤/例外處理 |
| log | CLogRouter | 日誌路由 |
存取方式:Yii::app()->componentID(如 Yii::app()->db)。
preinit():預初始化init():初始化、註冊行為、載入靜態組件、觸發 onBeginRequestonEndRequestactionXxx() 格式(如 actionIndex())index(可覆寫 defaultAction)<?php
class SiteController extends CController {
// 無動作會拋出異常
}
控制器負責:接收請求 → 呼叫模型 → 選擇視圖渲染 → 回應。
下篇將介紹如何為應用添加日誌功能(CLogRouter),掌握除錯與監控利器。