switchbox / switchbox
快速且可扩展的配置库,可加载和保存JSON、YAML、INI等格式
Requires
- php: >=5.3.0
Requires (Dev)
- mikey179/vfsstream: ~1.2
- phpunit/phpunit: ~4.0
Suggests
- symfony/yaml: Enables reading and writing YAML configuration files
This package is not auto-updated.
Last update: 2020-03-30 05:23:29 UTC
README
配置文件是创建软件的一个基本且普遍的组成部分,但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库的灵活性所启发。