Wallogit.com
2017 © Pedro Peláez
配置组件
配置组件包含两个类:, (*1)
Delz\Config\Config, (*2)
Delz\Config\Yaconf, (*3)
其中Delz\Config\Yaconf需要安装yaconf第三方插件才可以使用,具体安装请参考https://github.com/laruence/yaconf, (*4)
根据键值$key获取配置参数值 如果$key不存在,返回默认$default值 如果$key设置为null,返回所有配置参数, (*5)
get($key = null, $default = null), (*6)
判断键值$key是否存在, (*7)
has($key), (*8)
可以将类型的配置项集中在一起,包括:, (*9)
(1) 构造函数注入, (*10)
$map = [
'key1' => 'val1',
'key2' => 'val2'
];
new Config($map);
(2) ini文件, (*11)
$iniFile = '/path/demo.ini'; $config = new Config(); $config->loadIni($iniFile);
(3) yaml文件, (*12)
$ymlFile = '/path/demo.yml'; $config = new Config(); $config->loadYaml($ymlFile);
(4) php文件 php文件的结构如下:, (*13)
return [
'key1' => 'val1',
'key2' => 'val2'
];
装载php文件, (*14)
$phpFile = '/path/demo.php'; $config = new Config(); $config->loadPhp($phpFile);
(5) xml文件, (*15)
$xmlFile = '/path/demo.xml'; $config = new Config(); $config->loadXml($xmlFile);
(6) 数组文件, (*16)
$map = [
'key1' => 'val1',
'key2' => 'val2'
];
$config = new Config();
$config->load($map);
(7) 装载文件, (*17)
不清楚文件类型,根据后缀,使用不同的方法,支持php、ini、xml、yml, (*18)
说明:装载不同类型的会合并配置文件,如下:, (*19)
//数组1
$arr1 = [
'name' => 'tom',
'db' => [
'name' => '123',
'host' => '127.0.0.1'
]
]
//数组2
$arr2 = [
'title' => 'GM',
'db' => [
'user' => 'root',
'password' => 'root'
]
]
//合并后的数组为
[
'name' => 'tom',
'db' => [
'name' => '123',
'host' => '127.0.0.1',
'user' => 'root'.
'password' => 'root'
]
'title' => 'GM'
]
如果像swoole这种框架,直接用Config性能上没有损失, (*20)
如果是普通的php场景,每次都要初始化环境,读取不同配置文件会影响性能,可以如下解决, (*21)
(1)用Config类读取不同配置文件后,缓存到一个文件,每次只读一个文件 (2)用Config类读取配置后,生成Yaconf需要的ini文件,用Yaconf类高性能读取,如下:, (*22)
//读取config目录配置文件
$configPath = '/path/config';
$config = new Config();
$iterators = new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($configPath), \RecursiveIteratorIterator::SELF_FIRST);
foreach($iterators as $name => $file) {
if(!$file->isDir()) {
$config->loadFile($name);
}
}
$configMap = $config->get();
//生成yaconf的ini文件
$ini = Yaconf::arr2ini($configMap);
//将ini保存到Yaconf制定的$namespace.ini的文件,就可以用Yaconf读取配置参数