microlib/config

一个小型的PHP配置库,主要包含函数。

0.1.1 2014-09-18 18:44 UTC

This package is auto-updated.

Last update: 2024-09-20 09:57:09 UTC


README

一个小型的PHP配置库,主要包含函数。是的,是函数,因为操作配置数组应该简单且快速。

特性

  • 小型库。无冗余。易于使用的函数。
  • 支持PHP数组、JSON、INI、YAML和XML配置文件格式。
  • 易于应用默认值、强制要求设置和过滤多余数据。
  • 可以指定一个模式以递归验证数据。使用可调用来进行验证和转换。
  • 易于从嵌套配置结构中获取值。

使用方法

针对模式进行验证

假设你有一个如下所示的配置文件

{
    "first_name": "Jeremy ",
    "last_name": "Lindblom",
    "phone": {"number": "5559997777"},
    "gender": "whocares"
}

在你的PHP脚本中...

包含Config库。

require '/path/to/vendor/autoload.php';

use MicroLib\Config as cfg;

加载配置文件。

$config = cfg\load('config.json');

定义数据模式。使用schema函数是可选的,但有助于验证模式是否正确定义。(注意:模式可以放在单独的文件中,并使用load函数与其他配置数据一起加载。)

$schema = cfg\schema([
    'first_name' => [
        'required'  => true,
        'transform' => 'trim',
        'validate'  => 'ctype_alpha'
    ],
    'last_name' => [
        'required'  => true,
        'transform' => 'trim',
        'validate'  => 'ctype_alpha'
    ],
    'phone' => [
        'schema' => [
             'type' => [
                 'default'   => 'mobile',
                 'transform' => 'trim',
                 'validate'  => 'ctype_alpha',
             ],
             'number' => [
                 'required' => true,
                 'validate' => 'ctype_digit',
             ]
        ]
    ],
]);

使用模式验证配置数据。如果没有抛出异常,则数据有效。

$config = cfg\validate($config, $schema);

使用get从配置中获取数据。

echo cfg\get($config, 'phone.number');
#> 5559997777

echo cfg\get($config, 'phone.type');
#> mobile

简单检查所需键

如果你不需要模式的功能,仍然有简单的方法来强制要求设置和应用默认值。

假设你有一个以下配置数据的数组

$config = [
    'class'  => 'rogue',
    'race'   => 'half-elf',
    'level'  => 5,
    'weapon' => 'short sword',
];

如果你不关心所有项目,你可以使用keep函数创建一个只包含你想要的项目的新数组。

$config = cfg\keep($config, ['class', 'race', 'level']);

然后,使用create函数,你可以检查要求并应用默认值。

$config = cfg\create(
	$config,
	['class', 'race', 'level'],
	['status' => 'normal']
);

print_r($config);
#> Array
#> (
#>     [class] => rogue
#>     [race] => half-elf
#>     [level] => 5
#>     [status] => normal
#> )