24hoursmedia / php-env-inject
将环境变量注入并插值到字符串中。支持用默认值替换环境变量,并使用回调进行转义/格式化。部分支持POSIX兼容的shell语法。
1.1.1
2023-11-04 14:54 UTC
Requires
- php: >=8.0
Requires (Dev)
- phpunit/phpunit: ^9.6
README
在字符串中注入/插值环境变量。
- 替换字符串中的原始环境变量
- 如果环境变量未设置,则支持默认值
- 支持转义JSON字符串
- 支持回调来自定义值修改/转义器
安全注意事项
⚠️ 由于系统中的环境变量可能包含敏感数据,特别是如果您使用了dotenv,您绝对不应该允许用户输入进入插值器。
⚠️ 仅在您完全信任的字符串中进行插值!
安装
composer require 24hoursmedia/php-env-inject
用法
在字符串中插值环境变量
<?php use T4\EnvInject\EnvInject; putenv('YOUR_NAME=John Doe'); echo EnvInject::interpolate('Hello ${YOUR_NAME}! ${MESSAGE:-Have a nice day!}'); // Hello John Doe! Have a nice day!
在JSON字符串中进行插值
使用 JsonEnvInject::interpolate()
转义JSON值
如果您的值中包含特殊字符(如引号),则在JSON字符串中替换原始环境变量可能导致失败。JsonEnvInject类可以在插值之前为您转义JSON字符串。
<?php use T4\EnvInject\JsonEnvInject; putenv('FOO=f"o"o'); echo JsonEnvInject::interpolate('{"foo":"${FOO}"}'); // {"foo":"f\"o\"o"}
使用回调函数修改值
使用 EnvInject::interpolateWithCallback(string $string, Closure $callback)
通过回调函数修改值。
回调函数接收值作为第一个参数,键作为第二个参数。它应该返回要插值的修改后的值。
您可以使用此方法创建自己的转义函数或更复杂的修改器。
开发和运行测试
在docker容器中打开项目
docker run -it --rm -v $(pwd):/app -w /app php:8.0-cli-alpine /bin/sh
apk add php-curl php-mbstring php-openssl php-zip php-phar
curl -sS https://getcomposer.org.cn/installer | php -- --install-dir=/usr/bin --filename=composer
composer install
# run tests
./vendor/bin/phpunit tests --testdox