應(yīng)用主體是服務(wù)定位器,它部署一組提供各種不同功能的?應(yīng)用元件?來(lái)處理請(qǐng)求。 例如,urlManager元件負(fù)責(zé)處理網(wǎng)頁(yè)請(qǐng)求路由到對(duì)應(yīng)的控制器。 db元件提供資料庫(kù)相關(guān)服務(wù)等等。
在同一個(gè)應(yīng)用程式中,每個(gè)應(yīng)用程式元件都有一個(gè)獨(dú)特的 ID 用來(lái)區(qū)分其他應(yīng)用程式元件,你可以透過(guò)以下表達(dá)式存取應(yīng)用程式元件。
\Yii::$app->componentID
例如,可以使用?Yii::$app->db?來(lái)取得已註冊(cè)至應(yīng)用程式的[[yiidbConnection|DB connection]], 使用?Yii::$app->cache?來(lái)取得已註冊(cè)至應(yīng)用程式的[ [yiicachingCache|primary cache]]。
第一次使用以上表達(dá)式時(shí)候會(huì)建立應(yīng)用元件實(shí)例,後續(xù)再存取會(huì)傳回此實(shí)例,無(wú)需再次建立。
應(yīng)用程式元件可以是任意對(duì)象,可以在應(yīng)用主體配置配置[[yiibaseApplication::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í)再建立本機(jī)元件。
引導(dǎo)啟動(dòng)元件
上面提到一個(gè)應(yīng)用元件只會(huì)在第一次存取時(shí)實(shí)例化,如果處理請(qǐng)求過(guò)程沒有存取的話就不實(shí)例化。 有時(shí)你會(huì)想在每個(gè)請(qǐng)求處理過(guò)程都實(shí)例化某個(gè)元件即便它不會(huì)被訪問(wèn), 可以將該元件ID加入到應(yīng)用程式主體的 [[yiibaseApplication::bootstrap|bootstrap]] 屬性中。
例如, 如下的應(yīng)用主體配置保證了?log?元件一直被載入。
[ 'bootstrap' => [ // 將 log 組件 ID 加入引導(dǎo)讓它始終載入 'log', ], 'components' => [ 'log' => [ // "log" 組件的配置 ], ], ]
核心應(yīng)用元件
Yii 定義了一組固定ID和預(yù)設(shè)設(shè)定的?核心?元件,例如[[yiiwebApplication::request|request]] 元件用來(lái)收集使用者請(qǐng)求並解析路由; [[yiibaseApplication::db|request]] 元件用來(lái)收集使用者請(qǐng)求並解析路由; [[yiibaseApplication::db| db]] 代表一個(gè)可以執(zhí)行資料庫(kù)操作的資料庫(kù)連線。 透過(guò)這些元件,Yii應(yīng)用主體能處理使用者請(qǐng)求。
下面是預(yù)先定義的核心應(yīng)用元件列表,可以和普通應(yīng)用元件一樣配置和自訂它們。 當(dāng)你配置一個(gè)核心元件,不指定它的類別名稱的話就會(huì)使用Yii預(yù)設(shè)指定的類別。
[[yiiwebAssetManager|assetManager]]: 管理資源包和資源發(fā)布,詳情請(qǐng)參考 管理資源 一節(jié)。
注意配置該元件時(shí)必須指定元件類別名稱和其他相關(guān)元件屬性,如[[yiidbConnection::dsn]]。 詳情請(qǐng)參考 資料存取對(duì)象 一節(jié)。
[[yiibaseApplication::errorHandler|errorHandler]]: 處理 PHP 錯(cuò)誤和異常, 詳情請(qǐng)參考 錯(cuò)誤處理 一節(jié)。
日期使用長(zhǎng)格式。詳情請(qǐng)參考 格式化輸出資料 一節(jié)。
[[yiii18nI18N|i18n]]: 支援資訊翻譯和格式化。詳情請(qǐng)參考 國(guó)際化 一節(jié)。
[[yiilogDispatcher|log]]: 管理日誌物件。詳情請(qǐng)參考 日誌 一節(jié)。
[[yiiswiftmailerMailer|mail]]: 支援產(chǎn)生郵件結(jié)構(gòu)並傳送,詳情請(qǐng)參考 郵件 一節(jié)。
詳情請(qǐng)參考 響應(yīng) 一節(jié)。
詳情請(qǐng)參考 請(qǐng)求 一節(jié)。
[[yiiwebSession|session]]: 代表會(huì)話訊息,僅在[[yiiwebApplication|Web applications]] 網(wǎng)頁(yè)應(yīng)用中可用, 詳情請(qǐng)參考Sessions (會(huì)話) and Cookies 一節(jié)。
詳情請(qǐng)參考 URL 解析與產(chǎn)生 一節(jié)。
[[yiiwebUser|user]]: 代表認(rèn)證登入使用者訊息,僅在[[yiiwebApplication|Web applications]] 網(wǎng)頁(yè)應(yīng)用程式中可用, 詳情請(qǐng)參考認(rèn)證一節(jié)。
[[yiiwebView|view]]: 支援渲染視圖,詳情請(qǐng)參考 Views 一節(jié)。

熱AI工具

Undress AI Tool
免費(fèi)脫衣圖片

Undresser.AI Undress
人工智慧驅(qū)動(dòng)的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費(fèi)的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費(fèi)的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強(qiáng)大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6
視覺化網(wǎng)頁(yè)開發(fā)工具

SublimeText3 Mac版
神級(jí)程式碼編輯軟體(SublimeText3)
