vmassalov/config

配置服务

v1.0.0-alpha 2024-02-22 21:40 UTC

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 支持