vmassalov / config
配置服务
v1.0.0-alpha
2024-02-22 21:40 UTC
Requires
- php: >=8.2
Requires (Dev)
- phpstan/phpstan: ^1.10
- phpunit/phpunit: ^10.5.0
- squizlabs/php_codesniffer: ^3.0
Suggests
- ext-json: For parsing JSON configs
- ext-pdo: For working with DB config
- ext-yaml: For parsing YAML configs
This package is auto-updated.
Last update: 2024-09-23 16:43:12 UTC
README
基于文件配置匹配规则集的库
本包的主要目标是将业务逻辑的无限序列的 'elseif' 移出代码之外。它可以映射异常类到错误码、折扣计算规则或任何其他策略条件。所有不经常改变且不值得放入数据库中的条件都可以方便地转移到配置中。
安装
通过 composer
composer require vmassalov/config
快速使用
创建 yaml 配置文件,例如。
- conditions: dayOfWeek: - monday - tuesday - wednesday - thursday - friday projectPriority: - normal - minor result: salaryRate: 1 needOvertimeApprove: true - conditions: dayOfWeek: - monday - tuesday - wednesday - thursday - friday projectPriority: critical result: salaryRate: 1 needOvertimeApprove: false - conditions: projectPriority: critical result: salaryRate: 2 needOvertimeApprove: false
所有结果块应包含相同的键。所有条件块可以包含不同的键,具有单个或多个选项。
$configClient = \VMassalov\Config\ClientFactory::build('filesystem://./path/to/configs'); $configClient->find( 'config.yaml', [ 'dayOfWeek' => 'sunday', 'projectPriority' => 'critical', ], );
客户端将返回基于传入标准的第一项完整匹配的结果
配置
DSN
filesystem://
配置语法
请参阅 tests/functional/stubs/yaml/baseConfig.yaml 中的示例
测试
在 docker 中运行单元和功能测试
make build && make test
在本地运行单元和功能测试
php ./vendor/bin/phpunit
路线图
- 添加 JSON 支持
- 添加 XML 支持