1. 程式人生 > 程式設計 >Yii框架應用元件用法例項分析

Yii框架應用元件用法例項分析

本文例項講述了Yii框架應用元件用法。分享給大家供大家參考,具體如下:

應用元件 ¶

應用主體是服務定位器, 它部署一組提供各種不同功能的 應用元件 來處理請求。 例如,urlManager元件負責處理網頁請求路由到對應的控制器。 db元件提供資料庫相關服務等等。

在同一個應用中,每個應用元件都有一個獨一無二的 ID 用來區分其他應用元件, 你可以通過如下表達式訪問應用元件。

\Yii::$app->componentID

例如,可以使用 \Yii::$app->db 來獲取到已註冊到應用的 DB connection, 使用 \Yii::$app->cache

來獲取到已註冊到應用的 primary cache。

第一次使用以上表達式時候會建立應用元件例項, 後續再訪問會返回此例項,無需再次建立。

應用元件可以是任意物件,可以在 應用主體配置配置 yii\base\Application::$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加入到應用主體的 bootstrap 屬性中。

你還可以使用閉包來引導啟動自定義的元件。不需要直接返回一個例項化的元件。 在應用主體 yii\base\Application 例項化後,閉包也會被呼叫。

例如,如下的應用主體配置保證了 log 元件一直被載入。

[
  'bootstrap' => [
    'log',function($app){
      return new ComponentX();
    },function($app){
      // 可以寫自定義的程式碼
      return;
    }
  ],'components' => [
    'log' => [
      // "log" 元件的配置
    ],]

核心應用元件

Yii 定義了一組固定ID和預設配置的 核心 元件, 例如 request 元件 用來收集使用者請求並解析 路由; db 代表一個可以執行資料庫操作的資料庫連線。 通過這些元件,Yii應用主體能處理使用者請求。

下面是預定義的核心應用元件列表, 可以和普通應用元件一樣配置和自定義它們。 當你配置一個核心元件,不指定它的類名的話就會使用Yii預設指定的類。

更多關於Yii相關內容感興趣的讀者可檢視本站專題:《Yii框架入門及常用技巧總結》、《php優秀開發框架總結》、《smarty模板入門基礎教程》、《php面向物件程式設計入門教程》、《php字串(string)用法總結》、《php+mysql資料庫操作入門教程》及《php常見資料庫操作技巧彙總》

希望本文所述對大家基於Yii框架的PHP程式設計有所幫助。