helhum / dotenv-connector
为composer项目设置环境变量的可能性。
Requires
- php: >=7.2
- composer-plugin-api: ^1.0 || ^2.0
- symfony/dotenv: ^5.1 || ^6.4 || ^7.0
Requires (Dev)
- composer/composer: ^1.0 || ^2.0
- composer/semver: ^1.0 || ^2.0 || ^3.0
- mikey179/vfsstream: ^1.6.0
- phpunit/phpunit: ^5
README
这是一个composer插件,可以将.env文件中的环境变量提供给任何基于composer的项目,而无需修改项目中的代码。
背景信息
你可能想了解为什么将配置存储在环境中是一个好主意。[链接](http://12factor.net/config)。dotenv的理念是将此过程尽可能简化,这就是为什么创建了[phpdotenv](https://github.com/vlucas/phpdotenv)库。phpdotenv从.env文件加载环境变量到getenv(), $_ENV和$_SERVER,但你需要自己添加解析代码。
composer + symfony/dotenv + dotenv connector = <3
此库的想法是,每个由composer管理的项目,都会在composer自动加载初始化时间自动解析和加载同一位置的.env
文件(与根composer.json
相同)。这意味着环境变量可以非常早地使用,因此你可以在应用程序启动时使用它们。
如果环境变量APP_ENV
设置为任何值,或者指定的.env
文件不存在,则不执行任何操作,这样你就可以安全地用于生产。
如果你有机会在生产环境中公开环境变量,则建议这样做,并设置APP_ENV
以及使用在环境中直接公开的变量。
然而,对于规模较小的项目,仍然可以使用.env
文件作为生产环境的有效和简单解决方案。
配置选项
通常你不需要任何配置选项。但是,如果你需要,你可以修改.env
的路径或名称以符合你的需求。
你可以在根composer.json
文件的extra部分配置dotenv connector,如下所示
"extra": { "helhum/dotenv-connector": { "env-file": ".env", "adapter": "Helhum\\DotEnvConnector\\Adapter\\SymfonyDotEnv" } }
env-file
如果你想将.env
文件放在不同的位置,你可以指定从基本目录的相对路径。
默认值是".env",这意味着紧挨着你的根composer.json
。
关于在.env文件中引号值的注意事项
由于.env文件解析表现得像被包含在shell中,你必须注意具有字面美元符号$
的值需要用单引号括起来。这可能发生在你使用通过.env传递的凭据的散列值时,例如。
适配器
如果你需要以不同的方式公开环境变量,可以指定实现\Helhum\DotEnvConnector\DotEnvVars
接口的类。
默认值是"Helhum\DotEnvConnector\Adapter\SymfonyDotEnv",它使用symfony/dotenv对单个.env文件的默认解析。
这可能在以下情况下很有用,例如,如果你更喜欢使用其他dotenv解析库来公开.env中定义的变量,或者你想要切换到symfony dotenv解析的另一种解析策略。在后一种情况下,将"Helhum\DotEnvConnector\Adapter\SymfonyLoadEnv"用作此选项的值。请查看现有实现以获取示例。
反馈
欢迎提出任何反馈。请撰写错误报告、功能请求、创建拉取请求,或通过 Twitter 发送“谢谢”或传播消息。
谢谢!