新聞中心
我們推薦使用單例模式獲取配置管理對象。我們可以方便地通過?g.Cfg()?獲取默認的全局配置管理對象。同時,我們也可以通過?gcfg.Instance?包方法獲取配置管理對象單例。

使用g.Cfg
我們來看一個示例,演示如何讀取全局配置的信息。需要注意的是,全局配置是與框架相關的,因此統(tǒng)一使用?g.Cfg()?進行獲取。以下是一個默認的全局配置文件,包含了模板引擎的目錄配置以及?MySQL?數(shù)據(jù)庫集群(兩臺?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"))
}以上示例為讀取數(shù)據(jù)庫的第一個配置的?role?信息。運行后輸出:
/home/www/templates/
master可以看到,我們可以通過?g.Cfg()?方法獲取一個全局的配置管理器單例對象。配置文件內(nèi)容可以通過英文“?.?”號進行層級訪問(數(shù)組默認從?0?開始),?pattern?參數(shù)?database.default.0.role?表示讀取?database?配置項中?default?數(shù)據(jù)庫集群中的第?0?項數(shù)據(jù)庫服務器的?role?數(shù)據(jù)。
使用gcfg.Instance
當然也可以獨立使用?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"))
}自動檢索特性
單例對象在創(chuàng)建時會按照文件后綴?toml/yaml/yml/json/ini/xml?自動檢索配置文件。默認情況下會自動檢索配置文件?config.toml/yaml/yml/json/ini/xml?并緩存,配置文件在外部被修改時將會自動刷新緩存。
為方便多文件場景下的配置文件調(diào)用,簡便使用并提高開發(fā)效率,單例對象在創(chuàng)建時將會自動使用單例名稱進行文件檢索。例如:?g.Cfg("redis")?獲取到的單例對象將默認會自動檢索?redis.toml/yaml/yml/json/ini/xml?,如果檢索成功那么將該文件加載到內(nèi)存緩存中,下一次將會直接從內(nèi)存中讀取;當該文件不存在時,則使用默認的配置文件(?config.toml?)。
網(wǎng)頁標題:創(chuàng)新互聯(lián)GoFrame教程:GoFrame配置管理-配置對象
轉載注明:http://fisionsoft.com.cn/article/coohhjo.html


咨詢
建站咨詢
