susina/param-resolver

解析配置数组中的参数

v0.5 2024-08-12 08:36 UTC

This package is auto-updated.

Last update: 2024-09-17 13:30:00 UTC


README

Test Suite Test Coverage Maintainability

ParamResolver 是一个用于解析配置数组中参数的小类。它受到了 Symfony ParameterBag 类的极大启发。

安装

使用 composer 安装库

composer require susina/param-resolver

用法

在配置数组中,定义一些参数可能会有用。

参数是之前定义的属性,放在 % 特殊字符之间。当 ParamResolver 发现参数时,它只需将其占位符替换为之前定义的值。以下示例中,假设你有一个 json 配置文件

// configuration.json
{
    "library": {
        "project": "AwesomeProject"
    },
    "paths": {
        "projectDir": "/home/%project%"
    }
}

首先,你必须将其转换为数组,然后可以解析参数

<?php declare(strict_types=1);

    use Susina\ParamResolver\ParamResolver;

    //load and convert into an array
    $array = json_decode('configuration.json');

    //resolve the parameters
    $resolved = ParamResolver::create()->resolve($array);

    //print the resolved array or else
    echo json_encode($resolved);

现在 json 内容如下

{
    "library": {
        "project": "AwesomeProject"
    },
    "paths": {
        "projectDir": "/home/AwesomeProject"
    }
}

你可以通过重复特殊字符 % 来转义它

// configuration.json
{
    "discounts": {
        "jeans": "20%%"
    }
}

jeans 属性现在包含字符串 '20%'。

注意:数组中的键和值都可以包含参数。

特殊参数:环境变量

字符串 env 用于指定环境变量。

许多主机通过环境变量提供服务或凭据,你可以在配置文件中使用 env.variable 语法来使用它们。以下是一个示例

<?php

$_ENV['host']   = '192.168.0.54'; //Database host name
$_ENV['dbName'] = 'myDB'; //Database name

在你的 (yaml) 配置文件中可以写成

database:
  connections:
      default:
          adapter: mysql
          dsn: mysql:host=%env.host%;dbname=%env.dbName%

处理后的结果如下

database:
  connections:
      default:
          adapter: mysql
          dsn: mysql:host=192.168.0.54;dbname=myDB

问题

如果你发现错误或其他问题,请通过 Github 报告。

贡献

请参阅 CONTRIBUTING.md

许可

此库在 Apache-2.0 许可下发布。