susina / param-resolver
解析配置数组中的参数
v0.5
2024-08-12 08:36 UTC
Requires
- php: >=8.2
Requires (Dev)
- pestphp/pest: ^2
- psalm/phar: ^5
- susina/coding-standard: ^2
This package is auto-updated.
Last update: 2024-09-17 13:30:00 UTC
README
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 许可下发布。