socarrat/environment

一个与getenv()兼容的超级简单的dotenv文件解析器。

v0.1.0 2023-05-06 19:01 UTC

This package is auto-updated.

Last update: 2024-09-22 02:43:53 UTC


README

一个与getenv()兼容的超级简单的.env文件解析器。

Test

特性

安装

在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文件。