我们推荐使用单例模式获取配置管理对象。我们可以方便地通过g.Cfg()
获取默认的全局配置管理对象。同时,我们也可以通过gcfg.Instance
包方法获取配置管理对象单例。
我们来看一个示例,演示如何读取全局配置的信息。需要注意的是,全局配置是与框架相关的,因此统一使用g.Cfg()
进行获取。以下是一个默认的全局配置文件,包含了模板引擎的目录配置以及MySQL
数据库集群(两台master
)的配置。
示例配置:
viewpath: "/home/www/templates/"
database:
default:
- link: "mysql:root:12345678@tcp(127.0.0.1:3306)/test"
role: "master"
- link: "mysql:root:12345678@tcp(127.0.0.1:3306)/test"
role: "slave"
示例代码:
package main
import (
"fmt"
"github.com/GOgf/gf/v2/frame/g"
"github.com/gogf/gf/v2/os/gctx"
)
func main() {
var ctx = gctx.New()
fmt.Println(g.Cfg().Get(ctx, "viewpath"))
fmt.Println(g.Cfg().Get(ctx, "database.default.0.role"))
}
以上示例为读取数据库的第一个配置的role
信息。运行后输出:
/home/www/templates/
master
可以看到,我们可以通过g.Cfg()
方法获取一个全局的配置管理器单例对象。配置文件内容可以通过英文“.
”号进行层级访问(数组默认从0
开始),pattern
参数database.default.0.role
表示读取database
配置项中default
数据库集群中的第0
项数据库服务器的role
数据。
当然也可以独立使用gcfg
包,通过Instance
方法获取单例对象。
package main
import (
"fmt"
"github.com/gogf/gf/v2/os/gcfg"
"github.com/gogf/gf/v2/os/gctx"
)
func main() {
var ctx = gctx.New()
fmt.Println(gcfg.Instance().Get(ctx, "viewpath"))
fmt.Println(gcfg.Instance().Get(ctx, "database.default.0.role"))
}
单例对象在创建时会按照文件后缀toml/yaml/yml/json/ini/xml
自动检索配置文件。默认情况下会自动检索配置文件config.toml/yaml/yml/json/ini/xml
并缓存,配置文件在外部被修改时将会自动刷新缓存。
为方便多文件场景下的配置文件调用,简便使用并提高开发效率,单例对象在创建时将会自动使用单例名称进行文件检索。例如:g.Cfg("redis")
获取到的单例对象将默认会自动检索redis.toml/yaml/yml/json/ini/xml
,如果检索成功那么将该文件加载到内存缓存中,下一次将会直接从内存中读取;当该文件不存在时,则使用默认的配置文件(config.toml
)。
本文名称:创新互联GoFrame教程:GoFrame配置管理-配置对象
分享地址:http://www.csdahua.cn/qtweb/news5/379205.html
网站建设、网络推广公司-快上网,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 快上网