switchbox/switchbox

此包已被废弃,不再维护。未建议替代包。

快速且可扩展的配置库,可加载和保存JSON、YAML、INI等格式

v0.1.1 2014-03-30 20:46 UTC

This package is not auto-updated.

Last update: 2020-03-30 05:23:29 UTC


README

Latest Stable Version License Code Quality Test Coverage

配置文件是创建软件的一个基本且普遍的组成部分,但PHP没有提供很好的工具箱来使用它们。Switchbox就是为了填补这个空缺,允许开发人员快速且无缝地将配置文件集成到PHP应用中。

Switchbox可以使用可扩展的提供者架构从任何来源加载和保存配置。潜在提供者包括INI、JSON、YAML、XML以及Java风格的属性文件,还包括数据库、注册表以及其他任何可以想到的来源。目前实现的提供者包括JSON、YAML和纯PHP文件。

项目状态

Switchbox目前处于早期开发阶段,尚未准备好用于生产。

安装

安装Switchbox的最佳方式是使用Composer。只需在您的composer.json文件中将Switchbox添加为依赖项。

{
    "require": {
        "switchbox/switchbox": "0.1.*"
    }
}

然后您可以使用Composer安装Switchbox

$ composer install

或者,您也可以使用命令行将Switchbox添加为依赖项

$ composer require switchbox/switchbox:0.1.*

使用方法

使用Switchbox\Settings类来管理单个配置源。要创建一个Settings对象,首先创建一个提供者对象并将其传递给Settings构造函数。提供的提供者将在调用Settings::load()Settings::save()时用于加载和保存配置数据。

以下是一个简单的JSON配置文件示例

{
    "greeting": "Hello",
    "world": "Earth"
}

我们可以使用上述设置文件与以下代码结合使用

use Switchbox\Settings;
use Switchbox\Providers\JsonProvider;

// create a settings object
$settings = new Settings(new JsonProvider('settings.json'));

// load config from provider
$settings->load();

// get the values of some properties
echo $settings->get('greeting').', '.$settings->get('world')."!\n";

上面的代码将显示以下输出

Hello, Earth!

同样的功能也可以使用一个YAML设置文件实现

# settings.yaml
greeting: Hello
world: Earth

我们只需要修改原始代码,使用Switchbox\Providers\YamlProvider来加载文件。其余部分工作正常

// ...
// create a settings object
$settings = new Settings(new YamlProvider('settings.yaml'));
// ...

由于加载和保存配置的过程与Settings类解耦,因此您可以使用任何类型的来源,并为所有这些来源使用相同的便捷API。唯一要求是提供者必须实现Switchbox\Providers\ProviderInterface接口,该接口仅要求实现load()save()方法。

文档

API文档可在http://switchbox.stephencoakley.com/docs/api找到。

运行测试

安装依赖项后,您可以使用PHPUnit运行自动化单元测试

$ vendor/bin/phpunit

获取帮助的地方

需要帮助吗?只需给我发送一封电子邮件提出您的问题。请确保在邮件主题行中添加“Switchbox”,这样我知道如何帮助您。

贡献

希望帮助让Switchbox在未来变得可用吗?克隆此仓库并开始编码。Switchbox的贡献模式目前非常非正式,所以只需提交一个拉取请求。如果拉取请求符合项目目标,将会被审查和接受。如果您有任何问题,请联系Stephen Coakley(me@stephencoakley.com)。

许可证

Switchbox采用Apache许可证2.0版(Apache-2.0)。有关详细信息,请参阅LICENSE.md

灵感来源

Switchbox受到.NET Framework设置API的可用性和Apache的Commons Configuration库的灵活性所启发。