應(yīng)用主體是服務(wù)定位器,它部署一組提供各種不同功能的?應(yīng)用組件?來處理請求。 例如,urlManager組件負(fù)責(zé)處理網(wǎng)頁請求路由到對應(yīng)的控制器。db組件提供數(shù)據(jù)庫相關(guān)服務(wù)等等。
在同一個(gè)應(yīng)用中,每個(gè)應(yīng)用組件都有一個(gè)獨(dú)一無二的 ID 用來區(qū)分其他應(yīng)用組件,你可以通過如下表達(dá)式訪問應(yīng)用組件。
\Yii::$app->componentID
例如,可以使用 \Yii::$app->db 來獲取到已注冊到應(yīng)用的 [[yii\db\Connection|DB connection]], 使用 \Yii::$app->cache 來獲取到已注冊到應(yīng)用的 [[yii\caching\Cache|primary cache]]。
第一次使用以上表達(dá)式時(shí)候會(huì)創(chuàng)建應(yīng)用組件實(shí)例,后續(xù)再訪問會(huì)返回此實(shí)例,無需再次創(chuàng)建。
應(yīng)用組件可以是任意對象,可以在 應(yīng)用主體配置配置 [[yii\base\Application::components]] 屬性 . 例如:
[ 'components' => [ // 使用類名注冊 "cache" 組件 'cache' => 'yii\caching\ApcCache', // 使用配置數(shù)組注冊 "db" 組件 'db' => [ 'class' => 'yii\db\Connection', 'dsn' => 'mysql:host=localhost;dbname=demo', 'username' => 'root', 'password' => '', ], // 使用函數(shù)注冊"search" 組件 'search' => function () { return new app\components\SolrService; }, ], ]
補(bǔ)充:請謹(jǐn)慎注冊太多應(yīng)用組件,應(yīng)用組件就像全局變量,使用太多可能加大測試和維護(hù)的難度。 一般情況下可以在需要時(shí)再創(chuàng)建本地組件。
引導(dǎo)啟動(dòng)組件
上面提到一個(gè)應(yīng)用組件只會(huì)在第一次訪問時(shí)實(shí)例化,如果處理請求過程沒有訪問的話就不實(shí)例化。 有時(shí)你想在每個(gè)請求處理過程都實(shí)例化某個(gè)組件即便它不會(huì)被訪問, 可以將該組件ID加入到應(yīng)用主體的 [[yii\base\Application::bootstrap|bootstrap]] 屬性中。
例如, 如下的應(yīng)用主體配置保證了 log 組件一直被加載。
[ 'bootstrap' => [ // 將 log 組件 ID 加入引導(dǎo)讓它始終載入 'log', ], 'components' => [ 'log' => [ // "log" 組件的配置 ], ], ]
核心應(yīng)用組件
Yii 定義了一組固定ID和默認(rèn)配置的?核心?組件,例如 [[yii\web\Application::request|request]] 組件 用來收集用戶請求并解析 路由; [[yii\base\Application::db|db]] 代表一個(gè)可以執(zhí)行數(shù)據(jù)庫操作的數(shù)據(jù)庫連接。 通過這些組件,Yii應(yīng)用主體能處理用戶請求。
下面是預(yù)定義的核心應(yīng)用組件列表,可以和普通應(yīng)用組件一樣配置和自定義它們。 當(dāng)你配置一個(gè)核心組件,不指定它的類名的話就會(huì)使用Yii默認(rèn)指定的類。
[[yii\web\AssetManager|assetManager]]: 管理資源包和資源發(fā)布,詳情請參考 管理資源 一節(jié)。
注意配置該組件時(shí)必須指定組件類名和其他相關(guān)組件屬性,如[[yii\db\Connection::dsn]]。 詳情請參考 數(shù)據(jù)訪問對象 一節(jié)。
[[yii\base\Application::errorHandler|errorHandler]]: 處理 PHP 錯(cuò)誤和異常, 詳情請參考 錯(cuò)誤處理 一節(jié)。
日期使用長格式。詳情請參考 格式化輸出數(shù)據(jù) 一節(jié)。
[[yii\i18n\I18N|i18n]]: 支持信息翻譯和格式化。詳情請參考 國際化 一節(jié)。
[[yii\log\Dispatcher|log]]: 管理日志對象。詳情請參考 日志 一節(jié)。
[[yii\swiftmailer\Mailer|mail]]: 支持生成郵件結(jié)構(gòu)并發(fā)送,詳情請參考 郵件 一節(jié)。
詳情請參考 響應(yīng) 一節(jié)。
詳情請參考 請求 一節(jié)。
[[yii\web\Session|session]]: 代表會(huì)話信息,僅在[[yii\web\Application|Web applications]] 網(wǎng)頁應(yīng)用中可用, 詳情請參考Sessions (會(huì)話) and Cookies 一節(jié)。
詳情請參考 URL 解析和生成 一節(jié)。
[[yii\web\User|user]]: 代表認(rèn)證登錄用戶信息,僅在[[yii\web\Application|Web applications]] 網(wǎng)頁應(yīng)用中可用, 詳情請參考認(rèn)證一節(jié)。
[[yii\web\View|view]]: 支持渲染視圖,詳情請參考 Views 一節(jié)。

Hot AI Tools

Undress AI Tool
Undress images for free

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)
