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