2017 © Pedro Peláez
 

library config

配置组件

image

delz/config

配置组件

  • Tuesday, October 17, 2017
  • by sheawey
  • Repository
  • 1 Watchers
  • 0 Stars
  • 112 Installations
  • PHP
  • 1 Dependents
  • 0 Suggesters
  • 0 Forks
  • 0 Open issues
  • 1 Versions
  • 14 % Grown

The README.md

配置组件

配置组件包含两个类:, (*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)

Delz\Config\Config

可以将类型的配置项集中在一起,包括:, (*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读取配置参数

The Versions

17/10 2017

dev-master

9999999-dev

配置组件

  Sources   Download

MIT

The Requires

  • php >=7.0.0

 

by 徐威