應用主體是服務定位器,它部署一組提供各種不同功能的 應用元件 來處理請求。 例如,urlManager元件負責處理網頁請求路由到對應的控制器。 db元件提供資料庫相關服務等等。
在同一個應用程式中,每個應用程式元件都有一個獨特的 ID 用來區分其他應用程式元件,你可以透過以下表達式存取應用程式元件。
\Yii::$app->componentID
例如,可以使用 Yii::$app->db 來取得已註冊至應用程式的[[yiidbConnection|DB connection]], 使用 Yii::$app->cache 來取得已註冊至應用程式的[ [yiicachingCache|primary cache]]。
第一次使用以上表達式時候會建立應用元件實例,後續再存取會傳回此實例,無需再次建立。
應用程式元件可以是任意對象,可以在應用主體配置配置[[yiibaseApplication::components]] 屬性. 例如:
[ 'components' => [ // 使用类名注册 "cache" 组件 'cache' => 'yii\caching\ApcCache', // 使用配置数组注册 "db" 组件 'db' => [ 'class' => 'yii\db\Connection', 'dsn' => 'mysql:host=localhost;dbname=demo', 'username' => 'root', 'password' => '', ], // 使用函数注册"search" 组件 'search' => function () { return new app\components\SolrService; }, ], ]
補充:請謹慎註冊太多應用元件,應用元件就像全域變量,使用太多可能加大測試和維護的難度。 一般情況下可以在需要時再建立本機元件。
引導啟動元件
上面提到一個應用元件只會在第一次存取時實例化,如果處理請求過程沒有存取的話就不實例化。 有時你會想在每個請求處理過程都實例化某個元件即便它不會被訪問, 可以將該元件ID加入到應用程式主體的 [[yiibaseApplication::bootstrap|bootstrap]] 屬性中。
例如, 如下的應用主體配置保證了 log 元件一直被載入。
[ 'bootstrap' => [ // 将 log 组件 ID 加入引导让它始终载入 'log', ], 'components' => [ 'log' => [ // "log" 组件的配置 ], ], ]
核心應用元件
Yii 定義了一組固定ID和預設設定的 核心 元件,例如[[yiiwebApplication::request|request]] 元件用來收集使用者請求並解析路由; [[yiibaseApplication::db|request]] 元件用來收集使用者請求並解析路由; [[yiibaseApplication::db| db]] 代表一個可以執行資料庫操作的資料庫連線。 透過這些元件,Yii應用主體能處理使用者請求。
下面是預先定義的核心應用元件列表,可以和普通應用元件一樣配置和自訂它們。 當你配置一個核心元件,不指定它的類別名稱的話就會使用Yii預設指定的類別。
[[yiiwebAssetManager|assetManager]]: 管理資源包和資源發布,詳情請參考 管理資源 一節。
注意配置該元件時必須指定元件類別名稱和其他相關元件屬性,如[[yiidbConnection::dsn]]。 詳情請參考 資料存取對象 一節。
[[yiibaseApplication::errorHandler|errorHandler]]: 處理 PHP 錯誤和異常, 詳情請參考 錯誤處理 一節。
日期使用長格式。詳情請參考 格式化輸出資料 一節。
[[yiii18nI18N|i18n]]: 支援資訊翻譯和格式化。詳情請參考 國際化 一節。
[[yiilogDispatcher|log]]: 管理日誌物件。詳情請參考 日誌 一節。
[[yiiswiftmailerMailer|mail]]: 支援產生郵件結構並傳送,詳情請參考 郵件 一節。
詳情請參考 響應 一節。
詳情請參考 請求 一節。
[[yiiwebSession|session]]: 代表會話訊息,僅在[[yiiwebApplication|Web applications]] 網頁應用中可用, 詳情請參考Sessions (會話) and Cookies 一節。
詳情請參考 URL 解析與產生 一節。
[[yiiwebUser|user]]: 代表認證登入使用者訊息,僅在[[yiiwebApplication|Web applications]] 網頁應用程式中可用, 詳情請參考認證一節。
[[yiiwebView|view]]: 支援渲染視圖,詳情請參考 Views 一節。

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

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

熱門文章

熱工具

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

Dreamweaver CS6
視覺化網頁開發工具

WebStorm Mac版
好用的JavaScript開發工具

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),