<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # 服務定位器 服務定位器是一個了解如何提供各種應用所需的服務(或組件)的對象。在服務定位器中,每個組件都只有一個單獨的實例,并通過ID 唯一地標識。用這個 ID 就能從服務定位器中得到這個組件。 在 Yii 中,服務定位器是 yii\di\ServiceLocator 或其子類的一個實例。 最常用的服務定位器是**application(應用)**對象,可以通過?`\Yii::$app`?訪問。它所提供的服務被稱為**application components(應用組件)**,比如:`request`、`response`、`urlManager`?組件。可以通過服務定位器所提供的功能,非常容易地配置這些組件,或甚至是用你自己的實現替換掉他們。 除了 application 對象,每個模塊對象本身也是一個服務定位器。 要使用服務定位器,第一步是要注冊相關組件。組件可以通過 yii\di\ServiceLocator::set() 方法進行注冊。以下的方法展示了注冊組件的不同方法: ~~~ use yii\di\ServiceLocator; use yii\caching\FileCache; $locator = new ServiceLocator; // 通過一個可用于創建該組件的類名,注冊 "cache" (緩存)組件。 $locator->set('cache', 'yii\caching\ApcCache'); // 通過一個可用于創建該組件的配置數組,注冊 "db" (數據庫)組件。 $locator->set('db', [ 'class' => 'yii\db\Connection', 'dsn' => 'mysql:host=localhost;dbname=demo', 'username' => 'root', 'password' => '', ]); // 通過一個能返回該組件的匿名函數,注冊 "search" 組件。 $locator->set('search', function () { return new app\components\SolrService; }); // 用組件注冊 "pageCache" 組件 $locator->set('pageCache', new FileCache); ~~~ 一旦組件被注冊成功,你可以任選以下兩種方式之一,通過它的 ID 訪問它: ~~~ $cache = $locator->get('cache'); // 或者 $cache = $locator->cache; ~~~ 如上所示, yii\di\ServiceLocator 允許通過組件 ID 像訪問一個屬性值那樣訪問一個組件。當你第一次訪問某組件時,yii\di\ServiceLocator 會通過該組件的注冊信息創建一個該組件的實例,并返回它。之后,如果再次訪問,則服務定位器會返回同一個實例。 你可以通過 yii\di\ServiceLocator::has() 檢查某組件 ID 是否被注冊。若你用一個無效的 ID 調用 yii\di\ServiceLocator::get(),則會拋出一個異常。 因為服務定位器,經常會在創建時附帶[配置信息](http://www.yiichina.com/doc/guide/2.0/concept-configurations),因此我們提供了一個可寫的屬性,名為 yii\di\ServiceLocator::setComponents(),這樣就可以配置該屬性,或一次性注冊多個組件。下面的代碼展示了如何用一個配置數組,配置一個應用并注冊"db","cache" 和 "search" 三個組件:?`````php return [ ~~~ // ... 'components' => [ 'db' => [ 'class' => 'yii\db\Connection', 'dsn' => 'mysql:host=localhost;dbname=demo', 'username' => 'root', 'password' => '', ], 'cache' => 'yii\caching\ApcCache', 'search' => function () { return new app\components\SolrService; }, ], ~~~ ];?`````
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看