99re热这里只有精品视频,7777色鬼xxxx欧美色妇,国产成人精品一区二三区在线观看,内射爽无广熟女亚洲,精品人妻av一区二区三区

應(yīng)用組件(Application Components)

2018-02-24 15:40 更新

應(yīng)用組件

應(yīng)用主體是服務(wù)定位器,它部署一組提供各種不同功能的?應(yīng)用組件?來處理請(qǐng)求。 例如,urlManager組件負(fù)責(zé)處理網(wǎng)頁請(qǐng)求路由到對(duì)應(yīng)的控制器。db組件提供數(shù)據(jù)庫(kù)相關(guān)服務(wù)等等。

在同一個(gè)應(yīng)用中,每個(gè)應(yīng)用組件都有一個(gè)獨(dú)一無二的 ID 用來區(qū)分其他應(yīng)用組件,你可以通過如下表達(dá)式訪問應(yīng)用組件。

\Yii::$app->componentID

例如,可以使用?\Yii::$app->db?來獲取到已注冊(cè)到應(yīng)用的 yii\db\Connection, 使用?\Yii::$app->cache?來獲取到已注冊(cè)到應(yīng)用的 yii\caching\Cache。

第一次使用以上表達(dá)式時(shí)候會(huì)創(chuàng)建應(yīng)用組件實(shí)例,后續(xù)再訪問會(huì)返回此實(shí)例,無需再次創(chuàng)建。

應(yīng)用組件可以是任意對(duì)象,可以在?應(yīng)用主體配置配置 yii\base\Application::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í)再創(chuàng)建本地組件。

引導(dǎo)啟動(dòng)組件

上面提到一個(gè)應(yīng)用組件只會(huì)在第一次訪問時(shí)實(shí)例化,如果處理請(qǐng)求過程沒有訪問的話就不實(shí)例化。 有時(shí)你想在每個(gè)請(qǐng)求處理過程都實(shí)例化某個(gè)組件即便它不會(huì)被訪問, 可以將該組件ID加入到應(yīng)用主體的 yii\base\Application::bootstrap 屬性中。

例如, 如下的應(yīng)用主體配置保證了?log?組件一直被加載。

[
    'bootstrap' => [
        // 將 log 組件 ID 加入引導(dǎo)讓它始終載入
        'log',
    ],
    'components' => [
        'log' => [
            // "log" 組件的配置
        ],
    ],
]

核心應(yīng)用組件

Yii 定義了一組固定ID和默認(rèn)配置的?核心?組件,例如 yii\web\Application::request 組件 用來收集用戶請(qǐng)求并解析?路由; yii\base\Application::db 代表一個(gè)可以執(zhí)行數(shù)據(jù)庫(kù)操作的數(shù)據(jù)庫(kù)連接。 通過這些組件,Yii應(yīng)用主體能處理用戶請(qǐng)求。

下面是預(yù)定義的核心應(yīng)用組件列表,可以和普通應(yīng)用組件一樣配置和自定義它們。 當(dāng)你配置一個(gè)核心組件,不指定它的類名的話就會(huì)使用Yii默認(rèn)指定的類。

  • yii\web\AssetManager: 管理資源包和資源發(fā)布,詳情請(qǐng)參考?管理資源?一節(jié)。
  • yii\db\Connection: 代表一個(gè)可以執(zhí)行數(shù)據(jù)庫(kù)操作的數(shù)據(jù)庫(kù)連接, 注意配置該組件時(shí)必須指定組件類名和其他相關(guān)組件屬性,如yii\db\Connection::dsn。 詳情請(qǐng)參考?數(shù)據(jù)訪問對(duì)象?一節(jié)。
  • yii\base\Application::errorHandler: 處理 PHP 錯(cuò)誤和異常, 詳情請(qǐng)參考?錯(cuò)誤處理?一節(jié)。
  • yii\i18n\Formatter: 格式化輸出顯示給終端用戶的數(shù)據(jù),例如數(shù)字可能要帶分隔符, 日期使用長(zhǎng)格式。詳情請(qǐng)參考?格式化輸出數(shù)據(jù)一節(jié)。
  • yii\i18n\I18N: 支持信息翻譯和格式化。詳情請(qǐng)參考?國(guó)際化?一節(jié)。
  • yii\log\Dispatcher: 管理日志對(duì)象。詳情請(qǐng)參考?日志?一節(jié)。
  • yii\swiftmailer\Mailer: 支持生成郵件結(jié)構(gòu)并發(fā)送,詳情請(qǐng)參考?郵件?一節(jié)。
  • yii\base\Application::response: 代表發(fā)送給用戶的響應(yīng), 詳情請(qǐng)參考?響應(yīng)?一節(jié)。
  • yii\base\Application::request: 代表從終端用戶處接收到的請(qǐng)求, 詳情請(qǐng)參考?請(qǐng)求?一節(jié)。
  • yii\web\Session: 代表會(huì)話信息,僅在yii\web\Application 網(wǎng)頁應(yīng)用中可用, 詳情請(qǐng)參考?Sessions (會(huì)話) and Cookies?一節(jié)。
  • yii\web\UrlManager: 支持URL地址解析和創(chuàng)建, 詳情請(qǐng)參考?URL 解析和生成?一節(jié)。
  • yii\web\User: 代表認(rèn)證登錄用戶信息,僅在yii\web\Application 網(wǎng)頁應(yīng)用中可用, 詳情請(qǐng)參考?認(rèn)證?一節(jié)。
  • yii\web\View: 支持渲染視圖,詳情請(qǐng)參考?Views?一節(jié)。
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)