yaconf,使用單獨(dú)的一個(gè)配置目錄(在yaconf.directory指定),不和代碼在一起。
在php啟動(dòng)的時(shí)候,處理所有的要處理的配置,然后這些配置就會(huì)常駐內(nèi)存,隨著php的生命周期存亡. 避免了每次請(qǐng)求的時(shí)候解析配置文件。
配置目錄和代碼分離以后,可以借助一個(gè)配置管理后臺(tái),來實(shí)現(xiàn)配置的統(tǒng)一化管理。
配置如果有變化, 它會(huì)reload,不需要重啟(檢測(cè)的頻率由yaconf.check_delay控制)。
它支持豐富的配置類型,包括字符串,數(shù)組,分節(jié),分節(jié)繼承,并且還可以在配置中直接寫php的常量和環(huán)境變量等。
為什么要用 yaconf ?
一般我們項(xiàng)目中是用php文件做配置的,一個(gè)config目錄下可能有十幾個(gè)甚至數(shù)十個(gè).php配置文件,里面都是各種各樣的array, 這就導(dǎo)致配置文件的解析耗費(fèi)了很大的性能
一、單獨(dú)使用
在目錄 d:\phpstudy\yaconf 下新增配置文件 redis.ini,內(nèi)容如下
[base]
parent=yaconf
children=null
[children:base]
children=set重啟服務(wù)器,新建 index.php 文件測(cè)試
<?php
$redis = \yaconf::get('redis');
print_r($redis); 打印內(nèi)容
$ php index.php
hello worldarray
(
[base] => array
(
[parent] => yaconf
[children] => null
)
[children] => array
(
[parent] => yaconf
[children] => set
)
)二、框架集成使用(thinkphp5.1)
php.ini
[yaconf]
yaconf.directory=/home/www/web/cl_new_pay_dev
yaconf.check_delay=605.1 版本默認(rèn)支付yaconf
在項(xiàng)目更目錄新建 thinkphp.ini 添加以下內(nèi)容( cl_new_pay_dev 目錄下)
name=yaconf
year=2015
features[]=fast
features.1=light
features.plus=zero-copy
features.constant=php_version
features.env=${home}由于默認(rèn)yaconf使用多個(gè)配置文件,建議在項(xiàng)目中使用setyaconf方法指定yaconf使用的獨(dú)立配置文件,例如
// 建議在應(yīng)用的公共函數(shù)文件中進(jìn)行設(shè)置 common.php
think\facade\config::setyaconf('thinkphp'); (1)使用助手函數(shù)
var_dump(config::yaconf('name'));
var_dump(config::yaconf('year'));
var_dump(config::yaconf('features')['plus']);
var_dump(config::yaconf('features.plus'));
var_dump(config::yaconf('features.constant'));
var_dump(config::yaconf('features.env')); 打印結(jié)果
string(6) yaconf
string(4) 2015
string(9) zero-copy
string(9) zero-copy
string(6) 7.2.12
string(0) (2)不適用助手函數(shù),直接訪問
print_r(~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~);
print_r(\yaconf::get(cpay));
print_r(\yaconf::get(cpay.common));
print_r(\yaconf::get(cpay.database));
print_r(\yaconf::get(cpay.redis));
print_r(\yaconf::get(cpay.redis.host)); 打印結(jié)果
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~array
(
[common] => array
(
[app_name] => 二萬ocr
[app_host] => www.cnblogs.com
[app_debug] => 1
)
[database] => array
(
[app_name] => 二萬ocr
[app_host] => www.cnblogs.com
[app_debug] => 1
[hostname] => 127.0.0.1
[database] => cl_cpay
[username] => root
[password] => wang123456,
)
[redis] => array
(
[app_name] => 點(diǎn)點(diǎn)支付
[app_host] => www.cnblogs.com
[app_debug] => 1
[host] => 192.168.1.1
[port] => 6379
[auth] => 123456
[prefix] => tii
)
)
array
(
[app_name] => 二萬ocr
[app_host] => www.cnblogs.com
[app_debug] => 1
)
array
(
[app_name] => 二萬ocr
[app_host] => www.cnblogs.com
[app_debug] => 1
[hostname] => 127.0.0.1
[database] => cl_cpay
[username] => root
[password] => wang123456,
)
array
(
[app_name] => 二萬ocr
[app_host] => www.cnblogs.com
[app_debug] => 1
[host] => 192.168.1.1
[port] => 6379
[auth] => 123456
[prefix] => tii
)
192.168.1.1 capy.ini 配置文件
[common]
app_name = 二萬ocr
app_host = www.cnblogs.com
app_debug= true
[database:common]
hostname = 127.0.0.1
database = cl_cpay
username = root
password = wang123456,
[redis:common]
host = 192.168.1.1
port = 6379
auth = 123456
prefix = tii