[Yii2笔记]037应用组件(Applications Components) [ 技术分享 ]
说明
学习Yii Framework 2(易2框架)的过程是漫长的,也是充满乐趣的,以下是我学习Yii2框架时对官网英文资料(请参见原文网址)的翻译和代码实现,提供了较完整的代码,供你参考。不妥之处,请多多指正!
原文网址:
http://www.yiiframework.com/doc-2.0/guide-structure-application-components.html
本文主题:应用组件(Applications Components)
应用是服务定位器(services locator)。应用中存放着大量的待调用(so-Called)应用组件,用于处理请求时提供各种服务,例如:urlmanager组件负责将Web请求路由到合适的控制器上,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'=>'myslq:host=localhost;dbname=demo',
'username'=>'root',
'password'=>'',
],
//使用匿名函数创建'search'组件
'search'=>function(){
return new app\components\SolrService;
}
]
]
提示:你可以注册任意多个组件,但你必须谨慎对待,应用组件就象是全局变量,使用太多的应用组件可能会导致你的代码难于测试和维护,在大多数数情况下,你可以在需要的时候创建一个局部组件。
1、启动组件(Bootstrapping Components)
如前所述,一个应用组件仅在它初次被获取时被实例化。如果在整个请求过程中没有被获取,那应用组件就不会被实例化。有些情况下,尽管不被明确调用,但可能还会为每个请求要实例化一个应用组件,此时,你就可以在应用配置的bootstrap属性中加入应用组件的ID。例如:
[
'bootstrap' =>[
//在启动项中添加'log'应用组件
'log',
],
'components'=>[
'log'=>[
//为'log组件'添加配置信息
],
],
]
2、核心应用组件(Core Application Components)
Yii2定义了一系列核心应用组件,这些核心组件都有特定的ID和默认配置。例如,request组件用于收集用户请求信息并将其解析为路由;db组件代表一个数据库连接,通过它你可以执行数据库查询。在这些应用组件的帮助下,Yii应用才能够处理好用户请求。 以下列表是预定义的核心应用组件,你可以象操作普通应用组件一样配置和自定义它们,当你配置一个核心应用组件时,如果你没有定义它的类,将使用默认值:
1)assetManager:
assetManager管理asset绑定和asset发布,相关文档:
http://www.yiiframework.com/doc-2.0/guide-structure-assets.html
http://www.yiiframework.com/doc-2.0/yii-web-assetmanager.html
2)db
db代表数据库连接,通过它你可以执行DB查询,注意:当你配置此组件时,你必须先定义组件类和其他必需的组件属性,如yii\db\Connection::$dsn 。更多内容可以参考Data Access Objects文档:
http://www.yiiframework.com/doc-2.0/guide-db-dao.html
db文档:
http://www.yiiframework.com/doc-2.0/yii-db-connection.html
3)errorHandler
http://www.yiiframework.com/doc-2.0/guide-runtime-handling-errors.html
4)formatter
formatter用于格式化数据,这些数据将向终端用户显示。例如,一个数据可以显示千位分隔符,日期可以使用长格式。
http://www.yiiframework.com/doc-2.0/guide-output-formatting.html
5)i18n
i18n支持信息转换和格式化
http://www.yiiframework.com/doc-2.0/guide-tutorial-i18n.html
6)log
log管理日志
http://www.yiiframework.com/doc-2.0/guide-runtime-logging.html
7)mailer
提供邮件构建和发送功能。
http://www.yiiframework.com/doc-2.0/guide-tutorial-mailing.html
8)response
代表发送给终端用户的响应。
http://www.yiiframework.com/doc-2.0/guide-runtime-responses.html
9)request
代表从终端用户接收到的请求数据。
http://www.yiiframework.com/doc-2.0/guide-runtime-requests.html
10)session
代表session信息,此组件仅在Web应用中有效。
http://www.yiiframework.com/doc-2.0/guide-runtime-sessions-cookies.html
11)urlManager
支持URL解析和创建。
http://www.yiiframework.com/doc-2.0/guide-runtime-routing.html
12)user
代表用户身份验证信息,此组件仅在Web应用中有效。
http://www.yiiframework.com/doc-2.0/guide-security-authentication.html
13)view
支持视图渲染。
http://www.yiiframework.com/doc-2.0/guide-structure-views.html
(全文完)
共 0 条回复
阿江
最后登录:2024-03-03
在线时长:186小时21分
- 粉丝94
- 金钱16816
- 威望160
- 积分20276