avris / dotenv
Requires
- php: ^7.1
Requires (Dev)
- phpunit/phpunit: ^6.5
- symfony/console: ^4.0
- symfony/process: ^4.0
- symfony/var-dumper: ^4.0
This package is auto-updated.
Last update: 2024-09-12 03:52:31 UTC
README
安装
composer require avris/dotenv
.env
环境变量是一种调整应用程序以适应特定环境的绝佳方式,尤其是对于敏感数据,如数据库密码。
这些变量应由您的 HTTP 服务器设置,但在本地开发时,有一个 .env
文件要简单得多
APP_ENV=prod
APP_DEBUG=0
DB_HOST=127.0.0.1
DB_DATABASE=prod
DB_USER=user
DB_PASS=pass
您只需在前端控制器中加载此文件即可使用 Dotenv
(new \Avris\Dotenv\Dotenv)->load(__DIR__ . '/../.env');
现在,所有来自文件的变量都将通过 getenv
、$_ENV
和 $_SERVER
可用。
高级
如果您的变量值包含空格,请记住引用它
FOO="Lorem ipsum"
如果一行以 #
开头,您可以添加注释
# comment
FOO=bar
您可以在其他变量内部使用变量(用 \$
转义 $
)
VAR1=osiem
VAR2="${VAR1}naście ${CZEGO}"
VAR3=\$ESC
您还可以使用命令的输出(需要 symfony/process
,用 \$
转义 $
)
COMM1=$(whoami)
COMM2=\$(whoami)
记住 .env 是一个有效的 bash 脚本。
其他功能
您可以直接从文件中读取变量,而无需将其作为环境变量填充
$vars = (new \Avris\Dotenv\Dotenv)->read(__DIR__ . '/../.env');
或者只将变量填充到环境变量中,而不解析文件
(new \Avris\Dotenv\Dotenv)->populate([
'FOO' => 'foo',
'BAR' => 'bar',
]);
您还可以撤销此过程,并将变量写入 .env 文件
(new \Avris\Dotenv\Dotenv)->save(__DIR__ . '/.env', [
'FOO' => 'foo',
'BAR' => 'bar',
]);
或者不保存到文件
$string = (new \Avris\Dotenv\Dotenv)->dump([
'FOO' => 'foo',
'BAR' => 'bar',
]);
填充命令
Dotenv 提供了一种简单的方法,根据用户输入和默认值填充您的 .env
文件。
假设您有一个应用程序,其中有两个模块需要一些环境变量:Foo\Database
和 Foo\Mailer
。安装 symfony/console
并创建一个扩展 Avris\Dotenv\Command\FillCommand
的命令,提供所有默认值
final class FillCommandImplementation extends \Avris\Dotenv\Command\FillCommand
{
protected function getDefaults(): iterable
{
yield `Foo\Database` => [
'DB_HOST' => '127.0.0.1',
'DB_DATABASE' => 'foo',
'DB_USER' => 'root',
'DB_PASS' => '',
];
yield `Foo\Mailer` => [
'MAILER_URL' => 'null://',
];
}
}
假设您的 .env
文件如下所示
###> Foo\Database ###
DB_HOST=127.0.0.1
DB_DATABASE=prod
DB_USER=user
###< Foo\Database ###
FOO=bar
缺少 DB_PASS
和 MAILER_URL
,并定义了一个额外的变量 FOO
。
如果您现在 运行该命令,您将被告知 DB_PASS
和 MAILER_URL
应该是什么(提供默认值 ''
和 null://
),您提交的值将被放入 .env
文件中,而不会删除 FOO
。
版权
- 作者: Andre Prusinowski (Avris.it)
- 许可证: MIT