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

Yii2.0應用元件

伊谢尔伦
伊谢尔伦原創
2016-11-25 14:18:321074瀏覽

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