agashe / env-parser
用于处理env文件的强大PHP解析器
1.0.0
2023-10-04 11:30 UTC
Requires (Dev)
- phpunit/phpunit: ^10.3
This package is auto-updated.
Last update: 2024-09-04 13:51:22 UTC
README
用于处理env文件的强大PHP解析器。
特性
- 易于使用,无需配置
- 将.env文件转换为关联数组
- 对数字、布尔值和NULL进行类型转换
- 支持具有可选默认值的变量
- 支持在.env文件中添加注释
- 解析的数据保存在$_ENV和$_SERVER中
- 支持使用
getenv(...)
读取解析数据
安装
composer require agashe/env-parser
文档
要在项目中使用env-parser,您需要声明一个新的EnvParser
类的实例,然后调用接受单个参数(您的.env文件的路径)的parse
方法。
<?php
require "vendor/autoload.php";
use EnvParser\Parser;
$parser = new Parser();
$data = $parser->parse('/path/to/my/env/file');
var_dump($data);
类型转换
默认情况下,env-parser对所有解析的数据进行类型转换,因此对于以下文件
TEST_BOOL=true
TEST_NULL=null
TEST_FLOAT=1.234
解析器将返回
array(3) {
["TEST_BOOL"]=>
bool(true)
["TEST_NULL"]=>
NULL
["TEST_FLOAT"]=>
float(1.234)
}
$_ENV和$_SERVER
除了返回的结果外,env-parser还将提取的数据保存到$_ENV和$_SERVER中,因此您有多种方式可以访问您的数据。
$data = $parser->parse('/path/to/my/env/file');
echo $data['DATABASE_NAME']; // app_db
echo $_ENV['DATABASE_NAME']; // app_db
echo $_SERVER['DATABASE_NAME']; // app_db
使用getenv
方法
PHP提供了两个用于处理环境变量的方法:putenv()
和getenv()
,env-parser使用putenv()
来保存您的.env文件提取的数据,因此您可以使用getenv()
轻松访问它。
$data = $parser->parse('/path/to/my/env/file');
echo getenv('DATABASE_NAME'); // app_db
注释
您可以在.env文件中添加所有想添加的注释,env-parser将跳过所有注释并仅返回数据,因此假设您有以下.env文件
# MY DataBase Connection
DB_HOST = http://localhost # My database host
DB_NAME = "app_db" # My database name
它将被解析为
array(2) {
["DB_HOST"]=>
string(16) "http://localhost"
["DB_NAME"]=>
string(6) "app_db"
}
变量
Env-parser支持.env文件内的变量,因此您可以使用之前定义的键作为变量来使用其他键。
# Default email domain
EMAIL_DOMAIN = our-emails-domain.com
# Admin's default username
ADMIN_USERNAME = super-admin
# Admin's default email
ADMIN_EMAIL = ${ADMIN_USERNAME}@${EMAIL_DOMAIN}
上面的文件将被解析为
array(3) {
["EMAIL_DOMAIN"]=>
string(21) "our-emails-domain.com"
["ADMIN_USERNAME"]=>
string(11) "super-admin"
["ADMIN_EMAIL"]=>
string(33) "super-admin@our-emails-domain.com"
}
您还可以为变量添加默认值,以防数据缺失
# Default email domain
EMAIL_DOMAIN = our-emails-domain.com
# Admin's default email
ADMIN_EMAIL = ${ADMIN_USERNAME:=admin}@${EMAIL_DOMAIN}
env-parser将使用您提供的默认数据
array(2) {
["EMAIL_DOMAIN"]=>
string(21) "our-emails-domain.com"
["ADMIN_EMAIL"]=>
string(27) "admin@our-emails-domain.com"
}
如果没有提供默认值,解析器将为该变量返回空字符串,但其他值将按正常方式解析。
示例
# .env file
# check basic functionality
TEST_NO_QUOTES=Parser
TEST_SPACES = "1.0"
TEST_QUOTES='test'
# check boolean values
TEST_TRUE=true
TEST_FALSE=false
# check nullable values
TEST_NULL =null
TEST_EMPTY =
# check numeric values
TEST_FLOAT= 1500.223
TEST_INT= 123
# check comments
TEST_COMMENT_1 = test#test comment
TEST_COMMENT_2 = "test#test"
TEST_COMMENT_3 = 'some text' # test # comment
# check variables
TEST_VAR="${TEST_QUOTES}/${TEST_NO_QUOTES}"
TEST_DEFAULT_VAL="${UNKNOWN:=test} or some text like ${TEST_NO_QUOTES}"
此.env文件将被解析为
array(14) {
["TEST_NO_QUOTES"]=>
string(6) "Parser"
["TEST_SPACES"]=>
string(3) "1.0"
["TEST_QUOTES"]=>
string(4) "test"
["TEST_TRUE"]=>
bool(true)
["TEST_FALSE"]=>
bool(false)
["TEST_NULL"]=>
NULL
["TEST_EMPTY"]=>
string(0) ""
["TEST_FLOAT"]=>
float(1500.223)
["TEST_INT"]=>
int(123)
["TEST_COMMENT_1"]=>
string(4) "test"
["TEST_COMMENT_2"]=>
string(9) "test#test"
["TEST_COMMENT_3"]=>
string(9) "some text"
["TEST_VAR"]=>
string(11) "test/Parser"
["TEST_DEFAULT_VAL"]=>
string(29) "test or some text like Parser"
}
许可
(Env-Parser) 在MIT许可条款下发布。