adhocore / env
PHP 环境变量加载和检索器
v0.1.0
2020-01-09 16:23 UTC
Requires
- php: >=5.4
Requires (Dev)
- phpunit/phpunit: ^4.8 || ^5.7 || ^6.5 || ^7.5
README
- PHP 环境变量加载和检索器。
- 如果加载了
filter
扩展,可以在检索时应用消毒/过滤器。 - 使用 env 来配置应用程序是 12 个法则 之一。
安装
composer require adhocore/env
使用
加载
use Ahc\Env\Loader; // Load env variables from .env file to `putenv` by default: (new Loader)->load('/project/root/.env'); // Pass in boolean second param to control if the env should be reloaded: (new Loader)->load('/project/root/.env', true); // Load to $_SERVER global: (new Loader)->load('/project/root/.env', true, Loader::SERVER); // Load to $_ENV global and putenv(): (new Loader)->load('/project/root/.env', true, Loader::ENV | Loader::PUTENV); // Load to all targets: (new Loader)->load('/project/root/.env', true, Loader::ALL);
在
.env
文件中,始终用双引号括住复杂数值。例如:APP_KEY="K&^%*&^D(?<µ}^(P[X"
ENV 格式
支持 #
或 ;
注释。字面双引号应该转义为 ""
。下面有更多示例。
# comment line
a=1
b="2"
c=$3#
; also comment line
d="lol"
# empty
e=
# f is `"6"`
f=""6""
1_2=one_two
# empty too
E=""
A_B=Apple Ball
x=Y
可以如此引用
MAIN=1
REF=${MAIN}/2
REF2=${REF}/3
# below will not be parsed as INV is not resolved
REF3=${INV}
检索
use Ahc\Env\Retriever; // Retrieve: echo Retriever::getEnv($key); // Default value: echo Retriever::getEnv('PAYMENT_GATEWAY', 'stripe'); // Sanitization (pass third and optionally fourth parameters): echo Retriever::getEnv('MYSQL_PORT', 3306, FILTER_VALIDATE_INT); // Or you can use `env()` which is alias of `Retriever::getEnv()`: echo env('THE_KEY');
有关消毒/过滤值的更多信息,请参阅 filter_var。
基准测试
如果您感兴趣,这里有一个简单的 基准测试。
注意事项
默认情况下,此库仅将 env 加载到 putenv()
。请谨慎将机密凭证暴露在 $_ENV
和 $_SERVER
中,因为错误捕捉器可能会记录这些。
尽管此库已经足够快,但在生产环境中,您可能希望通过按需加载来稍微提高性能。
if (!getenv('<LAST_ENV_APP_SHOULD_BE_AWARE_OF>')) { // Override false :) (new Loader)->load('/project/root/.env', false); }
例如,如果您的应用程序最近引入了 FB_APP_ID
环境变量,但此值尚未在机器中硬编码,则将通过 .env
文件加载,否则您已经受保护。
鸣谢
该项目由 please 管理。