yii应用组件是什么意思
发布时间 - 2019-11-06 00:00:00 点击率:次应用主体是服务定位器, 它部署一组提供各种不同功能的应用组件来处理请求。 例如,urlmanager组件负责处理网页请求路由到对应的控制器、db组件提供数据库相关服务等等。
在同一个应用中,每个应用组件都有一个独一无二的 ID 用来区分其他应用组件, 你可以通过如下表达式访问应用组件。 (推荐学习:yii教程)
\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
# bootstrap
# 全局变量
# 闭包
# 对象
# 数据库
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
谷歌浏览器如何更改浏览器主题 Google Chrome主题设置教程
Laravel模型事件有哪些_Laravel Model Event生命周期详解
Laravel Octane如何提升性能_使用Laravel Octane加速你的应用
如何用wdcp快速搭建高效网站?
佐糖AI抠图怎样调整抠图精度_佐糖AI精度调整与放大细化操作【攻略】
如何将凡科建站内容保存为本地文件?
Laravel如何编写单元测试和功能测试?(PHPUnit示例)
购物网站制作费用多少,开办网上购物网站,需要办理哪些手续?
如何用狗爹虚拟主机快速搭建网站?
Laravel数据库迁移怎么用_Laravel Migration管理数据库结构的正确姿势
如何在云主机上快速搭建网站?
Win11怎么更改系统语言为中文_Windows11安装语言包并设为显示语言
智能起名网站制作软件有哪些,制作logo的软件?
如何在宝塔面板中创建新站点?
制作电商网页,电商供应链怎么做?
Laravel如何使用Passport实现OAuth2?(完整配置步骤)
Laravel怎么配置不同环境的数据库_Laravel本地测试与生产环境动态切换【方法】
Laravel如何处理CORS跨域请求?(配置示例)
Laravel如何优雅地处理服务层_在Laravel中使用Service层和Repository层
Laravel如何部署到服务器_线上部署Laravel项目的完整流程与步骤
Laravel如何与Docker(Sail)协同开发?(环境搭建教程)
详解一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)
HTML5段落标签p和br怎么选_文本排版常用标签对比【解答】
Laravel如何实现邮箱地址验证功能_Laravel邮件验证流程与配置
JavaScript如何实现继承_有哪些常用方法
Laravel如何使用Service Provider注册服务_Laravel服务提供者配置与加载
HTML 中动态设置元素 name 属性的正确语法详解
HTML透明颜色代码在Angular里怎么设置_Angular透明颜色使用指南【详解】
百度浏览器如何管理插件 百度浏览器插件管理方法
个人摄影网站制作流程,摄影爱好者都去什么网站?
bootstrap日历插件datetimepicker使用方法
JavaScript中的标签模板是什么_它如何扩展字符串功能
php结合redis实现高并发下的抢购、秒杀功能的实例
Laravel如何实现数据库事务?(DB Facade示例)
猪八戒网站制作视频,开发一个猪八戒网站,大约需要多少?或者自己请程序员,需要什么程序员,多少程序员能完成?
Win10如何卸载预装Edge扩展_Win10卸载Edge扩展教程【方法】
Windows Hello人脸识别突然无法使用
Laravel如何使用Guzzle调用外部接口_Laravel发起HTTP请求与JSON数据解析【详解】
如何用已有域名快速搭建网站?
音乐网站服务器如何优化API响应速度?
Laravel怎么生成二维码图片_Laravel集成Simple-QrCode扩展包与参数设置【实战】
Laravel怎么写单元测试_PHPUnit在Laravel项目中的基础测试入门
如何在橙子建站中快速调整背景颜色?
iOS验证手机号的正则表达式
如何在阿里云购买域名并搭建网站?
Laravel API资源类怎么用_Laravel API Resource数据转换
Windows家庭版如何开启组策略(gpedit.msc)?(安装方法)
Laravel如何实现用户角色和权限系统_Laravel角色权限管理机制
Linux系统运维自动化项目教程_Ansible批量管理实战
Laravel中间件起什么作用_Laravel Middleware请求生命周期与自定义详解


=demo',
'username' => 'root',
'password' => '',
],
// 使用函数注册"search" 组件
'search' => function () {
return new app\components\SolrService;
},
],
]