搜尋
首頁php教程PHP开发Yii2.0應用元件

Yii2.0應用元件

Nov 25, 2016 pm 02:18 PM

應用主體是服務定位器,它部署一組提供各種不同功能的 應用元件 來處理請求。 例如,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 一節。


陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

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

熱工具

SublimeText3 英文版

SublimeText3 英文版

推薦:為Win版本,支援程式碼提示!

mPDF

mPDF

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

SublimeText3 Mac版

SublimeText3 Mac版

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

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器