亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

directory search
閱讀前篇 簡介 Yii 是什么 從 Yii 1.1 升級 入門 安裝 Yii 運行應(yīng)用 第一次問候 使用Forms 數(shù)據(jù)庫應(yīng)用 使用 Gii 生成代碼 進(jìn)階 應(yīng)用結(jié)構(gòu) 概述 入口腳本 應(yīng)用(Applications) 應(yīng)用組件(Application Components) 控制器(Controllers) 模型(Models) 視圖(views) 模塊(Modules) 過濾器(Filters) 小部件(Widgets) 前端資源(Assets) 擴(kuò)展(Extensions) 請求處理 運行概述 啟動引導(dǎo)(Bootstrapping) 路由和創(chuàng)建URL 請求(Requests) 響應(yīng)(Responses) Sessions 和 Cookies 錯誤處理(Handling Errors) 日志(Logging) 關(guān)鍵概念 組件(Component) 屬性(Property) 事件(Events) 行為(Behaviors) 配置(Configurations) 別名(Aliases) 類自動加載(Autoloading) 服務(wù)定位器(Service Locator) 依賴注入容器(Dependency Injection Container) 配合數(shù)據(jù)庫工作 數(shù)據(jù)庫訪問 (Data Access Objects) 查詢生成器(Query Builder) 活動記錄(Active Record) 數(shù)據(jù)庫遷移(Migrations) Sphinx Redis MongoDB Elasticsearch 接收用戶數(shù)據(jù) 創(chuàng)建表單(Creating Forms) 輸入驗證(Validating Input) 文件上傳(Uploading Files) 收集列表輸入(Collecting Tabular Input) 多模型的復(fù)合表單(Getting Data for Multiple Models) 顯示數(shù)據(jù) 格式化輸出數(shù)據(jù)(Data Formatting) 分頁(Pagination) 排序(Sorting) 數(shù)據(jù)提供器(Data Providers) 數(shù)據(jù)小部件(Data Widgets) 客戶端腳本使用(Working with Client Scripts) 主題(Theming) 安全 認(rèn)證(Authentication) 授權(quán)(Authorization) 處理密碼(Working with Passwords) 客戶端認(rèn)證(Auth Clients) 最佳安全實踐(Best Practices) 緩存 概述 數(shù)據(jù)緩存 片段緩存 頁面緩存 HTTP 緩存 RESTfull Web服務(wù) 快速入門(Quick Start) 資源(Resources) 控制器(Controllers) 路由(Routing) 格式化響應(yīng)(Response Formatting) 授權(quán)認(rèn)證(Authentication) 速率限制(Rate Limiting) 版本(Versioning) 錯誤處理(Error Handling) 開發(fā)工具 調(diào)試工具欄和調(diào)試器 使用Gii生成代碼 生成API文檔 測試 概述(Overview) 配置測試環(huán)境(Testing environment setup) 單元測試(Unit Tests) 功能測試(Function Tests) 驗收測試(Acceptance Tests) 測試夾具(Fixtures) 高級專題 高級應(yīng)用模板 創(chuàng)建自定義應(yīng)用程序結(jié)構(gòu) 控制臺命令 核心驗證器(Core Validators) 國際化 收發(fā)郵件 性能優(yōu)化 共享主機環(huán)境 模板引擎 集成第三方代碼 小部件 Bootstrap 小部件 Jquery UI 助手類 概述 Array 助手(ArrayHelper) Html 助手(Html) Url 助手(Url)
characters

服務(wù)定位器

服務(wù)定位器

服務(wù)定位器是一個了解如何提供各種應(yīng)用所需的服務(wù)(或組件)的對象。在服務(wù)定位器中,每個組件都只有一個單獨的實例,并通過ID 唯一地標(biāo)識。用這個 ID 就能從服務(wù)定位器中得到這個組件。

在 Yii 中,服務(wù)定位器是 yii\di\ServiceLocator 或其子類的一個實例。

最常用的服務(wù)定位器是application(應(yīng)用)對象,可以通過?\Yii::$app?訪問。它所提供的服務(wù)被稱為application components(應(yīng)用組件),比如:request、response、urlManager?組件??梢酝ㄟ^服務(wù)定位器所提供的功能,非常容易地配置這些組件,或甚至是用你自己的實現(xiàn)替換掉他們。

除了 application 對象,每個模塊對象本身也是一個服務(wù)定位器。

要使用服務(wù)定位器,第一步是要注冊相關(guān)組件。組件可以通過 yii\di\ServiceLocator::set() 方法進(jìn)行注冊。以下的方法展示了注冊組件的不同方法:

use yii\di\ServiceLocator;
use yii\caching\FileCache;

$locator = new ServiceLocator;

// 通過一個可用于創(chuàng)建該組件的類名,注冊 "cache" (緩存)組件。$locator->set('cache', 'yii\caching\ApcCache');

// 通過一個可用于創(chuàng)建該組件的配置數(shù)組,注冊 "db" (數(shù)據(jù)庫)組件。$locator->set('db', [
    'class' => 'yii\db\Connection',
    'dsn' => 'mysql:host=localhost;dbname=demo',
    'username' => 'root',
    'password' => '',
]);

// 通過一個能返回該組件的匿名函數(shù),注冊 "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 像訪問一個屬性值那樣訪問一個組件。當(dāng)你第一次訪問某組件時,yii\di\ServiceLocator 會通過該組件的注冊信息創(chuàng)建一個該組件的實例,并返回它。之后,如果再次訪問,則服務(wù)定位器會返回同一個實例。

你可以通過 yii\di\ServiceLocator::has() 檢查某組件 ID 是否被注冊。若你用一個無效的 ID 調(diào)用 yii\di\ServiceLocator::get(),則會拋出一個異常。

因為服務(wù)定位器,經(jīng)常會在創(chuàng)建時附帶配置信息,因此我們提供了一個可寫的屬性,名為 yii\di\ServiceLocator::setComponents(),這樣就可以配置該屬性,或一次性注冊多個組件。下面的代碼展示了如何用一個配置數(shù)組,配置一個應(yīng)用并注冊"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;
? ? },
],
];?

Previous article: Next article: