socarrat / environment
一个与getenv()兼容的超级简单的dotenv文件解析器。
Requires (Dev)
- phpunit/phpunit: ^9.5
This package is auto-updated.
Last update: 2024-09-22 02:43:53 UTC
README
一个与getenv()
兼容的超级简单的.env
文件解析器。
特性
- 能够很好地解析
.env
文件 - 可以从文件系统和字符串输入解析
.env
文件 - 特殊字符
- 与
getenv()
兼容:无需修改现有应用程序 - 容错
- 经过良好测试
- 多行值
- 支持注释(WIP)
- 无效文件警告(WIP)
安装
在Packagist上下载此软件包
composer require socarrat/environment
用法
EnvironmentManager
负责解析文件系统中的.env
文件(或,如果您愿意,作为字符串)。它按需这样做:您需要调用一个(或多个)解析方法(请参阅API)来加载环境变量。
关于getenv()
如何处理?
解析函数的一个参数是bool $putenv
。如果您将其设置为true(默认值),则对每个解析的变量都会调用putenv()
。如果您已经使用getenv()
,则无需修改程序:您只需要在开始时调用一次解析函数。
示例
请参阅examples/
目录以获取一些用法示例。
.env
文件格式
基本格式
.env
文件包含环境特定设置的键值对。每行包含一个键值对。键应为大写,只能包含A-Z字符和下划线。然后是=
符号,然后是值。以下是一个示例
DB_ENGINE=mysql
DB_NAME=example
引号内的值
为了避免混淆,您可以在值周围使用双引号。
DB_PASSWORD="Welkom2018"
请注意,单引号'
不会从值中删除!例如,DB_TABLE='users'
的值是'users'
而不是users
。
多行值
支持多行值,只要值被双引号包围即可。
TEXT="Calculate density using:
ρ = m/V
where ρ is the density,
m is the mass,
and V is the volume.
"
特殊字符
您可以在值中使用以下特殊字符
示例
ESCAPED_VALUES="Escape \t tabs \t, \n newlines \n, and \"quotes\" with a \\backslash\\"
空白处理
空白是这样处理的
-
在键之前的前导空白将被忽略。
-
在值之后的尾随空白总是被删除,除非包括空白在内的值被双引号包围。
-
作为值的一部分的新行前的前导空白将被保留。
-
作为值的一部分的新行后的尾随空白总是被忽略,除非该行是值的一部分的最后一行,且空白位于关闭双引号之前。
API
class Socarrat\Environment\EnvironmentManager
static public function getParsedEnv(): array
返回所有解析的环境变量作为关联数组。
static public function parseFS(string $rootDir, bool $putenv = true)
解析文件系统中的.env
文件。
此方法按照EnvironmentManager::$fileOrder中指定的顺序读取文件。您可以使用setFileOrder设置此顺序。
static public function parseString(string $envFile, bool $putenv = true)
解析传入字符串的单个.env
文件。
static public function setFileOrder(array $order): void
设置加载.env
文件的顺序(通过$order
参数传递)。索引越低,重要性越高。
默认文件顺序为
[ ".env.local", ".env.shared", ".env", ]
测试
此库通过PHPunit使用tests/
目录中的测试进行单元测试。您可以在您的机器上运行测试套件(composer run-script test
)。每个提交的测试结果(在Ubuntu 22.04上运行)可在GitHub上查看。
版权
(c) 2023 Romein van Buren。许可协议为MIT。
有关完整的版权和许可信息,请查看随源代码一起分发的license.md
文件。