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

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