默認(rèn)情況下,項(xiàng)目里會(huì)有以下幾個(gè)配置文件:
$ tree ./config/
./Config/
├── app.php
├── dbs.php
├── di.php
└── sys.php
其中app.php為項(xiàng)目應(yīng)用配置;dbs.php為分布式存儲(chǔ)的數(shù)據(jù)庫(kù)配置;sys.php為不同環(huán)境下的系統(tǒng)配置。這三個(gè)文件都是用于存放配置信息,可通過(guò)\PhalApi\DI()->config
進(jìn)行讀取。
值得注意的是,./config/di.php
文件則屬于依賴(lài)注入配置文件,用于配置需在\PhalApi\DI()
容器中注冊(cè)的服務(wù)資源。
默認(rèn)已注冊(cè)配置組件服務(wù),名稱(chēng)是\PhalApi\DI()->config
。
// 配置
$di->config = new FileConfig(API_ROOT . '/config');
假設(shè)app.php配置文件里有:
return array(
'version' => '1.1.1',
'email' => array(
'address' => 'chanzonghuang@gmail.com',
);
);
可以分別這樣根據(jù)需要獲取配置:
// app.php里面的全部配置
\PhalApi\DI()->config->get('app'); //返回:array( ... ... )
// app.php里面的單個(gè)配置
\PhalApi\DI()->config->get('app.version'); //返回:1.1.1
// app.php里面的多級(jí)配置
\PhalApi\DI()->config->get('app.email.address'); //返回:'chanzonghuang@gmail.com'
其他配置文件的讀取類(lèi)似,你也可以根據(jù)需要添加新的配置文件。
當(dāng)一個(gè)配置不存在時(shí),返回NULL。例如:
\PhalApi\DI()->config->get('app.not_found'); //返回:NULL
當(dāng)需要指定默認(rèn)值時(shí),可通過(guò)第二個(gè)參數(shù)指定。例如:
\PhalApi\DI()->config->get('app.not_found', 404); //返回:404
Yaconf擴(kuò)展需要PHP 7及以上版本,并且需要先安裝Yaconf擴(kuò)展。
溫馨提示:Yaconf擴(kuò)展的安裝請(qǐng)參考laruence/yaconf。
安裝部署完成后,先重新注冊(cè)\PhalApi\DI()->config
:
// 配置
$di->config = new PhalApi\Config\YaconfConfig();
然后,便和正常的配置一樣使用。
// 相當(dāng)于Yaconf::get("foo")
\PhalApi\DI()->config->get('foo');
//相當(dāng)于Yaconf::has("foo")
\PhalApi\DI()->config->has('foo');
需要注意的是,使用Yaconf擴(kuò)展與默認(rèn)的文件配置的區(qū)別的是,配置文件的目錄路徑以及配置文件的格式。當(dāng)然也可以把Yaconf擴(kuò)展的配置目錄路徑設(shè)置到PhalApi的配置目錄./config。
如果需要使用其他方式讀取配置,可根據(jù)實(shí)情需要,實(shí)現(xiàn)PhalApi\Config接口,然后在./config/di.php
文件重新注冊(cè)\PhalApi\DI()->config
即可。
例如數(shù)據(jù)庫(kù)配置,這樣可以支持不發(fā)布代碼的情況下進(jìn)行配置更改。
更多建議: