阿江 2017-10-05 07:55:21 1790次浏览 0条回复 0 0 0

说明

学习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

(全文完)

    没有找到数据。
您需要登录后才可以回复。登录 | 立即注册