xeriab/konfig

另一个简单的配置加载库。

0.2.6 2016-10-18 08:39 UTC

This package is not auto-updated.

Last update: 2024-09-14 18:26:16 UTC


README

另一个简单的配置加载库。

Latest Version Software License Build Status Coverage Status Quality Score Total Downloads

Konfig 是一个简单的配置加载库,支持 INIJSONNEONPHPTOMLXMLJava-PropertiesYML/YAML 文件。

需求

Konfig 需要 PHP 5.6+,并建议使用 Yosymfony Toml 解析器Nette NEONPHP YAMLSymfony YAML

安装

安装 Konfig 的推荐方式是通过 Composer。

$ composer require xeriab/konfig

使用

Konfig 设计得简单易用,轻量级。您可以使用它来加载、获取、设置和删除配置。

加载文件

可以通过工厂方法 load() 或直接实例化来创建 Konfig 对象。

use Exen\Konfig\Konfig;

// Load a single file
$config = Konfig::load('konfig.json');
$config = new Konfig('konfig.json');

// Load values from multiple files
$config = new Konfig(['konfig.json', 'konfig.xml']);

// Load all supported files in a directory
$config = new Konfig(__DIR__ . '/konfig');

// Load values from optional files
$config = new Konfig(['konfig.dist.json', 'konfig.json']);

根据文件扩展名解析和加载文件。

注意:当加载多个文件时,具有 重复键 的条目将采用最后一个加载的文件中的值。

注意:当加载目录时,路径将被 glob 化,并按名称字母顺序加载文件。

获取值

可以通过三种方式获取值。一是使用 get() 方法。

// Get value using key
$debug = $config->get('debug');

// Get value using nested key
$secret = $config->get('security.secret');

// Get a value with a fallback
$ttl = $config->get('app.timeout', 3000);

第二种方法是将其用作数组。

// Get value using a simple key
$debug = $config['debug'];

// Get value using a nested key
$secret = $config['security.secret'];

// Get nested value like you would from a nested array
$secret = $config['security']['secret'];

第三种方法是使用 all() 方法。

// Get all values
$data = $config->all();

设置值

虽然 Konfig 支持通过 set() 或数组语法设置值,但通过这种方式进行的任何更改 都不会反映回源文件。按设计,如果您需要更改配置文件,您必须手动进行。

$config = Konfig::load('konfig.json');

// Sample value from our konfig file
assert($config['secret'] == '123');

// Update konfig value to something else
$config['secret'] = '456';

// Reload the file
$config = Konfig::load('konfig.json');

// Same value as before
assert($config['secret'] == '123');

// This will fail
assert($config['secret'] == '456');

使用默认值

有时在您的项目中,您可能希望使用 Konfig 来存储应用程序设置,而不需要文件 I/O。您可以通过扩展 AbstractKonfig 类并填充 getDefaults() 方法来实现这一点。

use Exen\Konfig\AbstractKonfig;

class MyKonfig extends AbstractKonfig
{
    protected function getDefaults()
    {
        return [
            'host' => 'localhost',
            'port' => 80,
            'servers' => [
                'host1',
                'host2',
                'host3',
            ],
            'app' => [
                'name' => 'konfig',
                'secret' => 'secret',
            ],
        ];
    }
}

支持的配置文件示例

简单、有效的配置文件的示例可以在 这里 找到。

变更日志

请参阅 变更日志 以获取详细信息。

测试

$ phpunit

贡献

请参阅 贡献 以获取详细信息。

致谢

贡献者

许可证

MIT 许可证(MIT)。请参阅 许可证 以获取更多信息。