oohology/dotenvwriter

PHP中编辑 .env 文件的接口。

v1.3.1 2018-04-23 13:59 UTC

README

PHP中编辑 .env 文件的接口

Build Status

注意:这可能在生产环境中不推荐使用,但对于自动化安装任务等可能很有用。

基本用法

通常,您将打开一个 .env 文件,使用 set 方法添加或替换一些值,然后调用 save 方法写入结果。

打开环境文件并替换一个值

use DotEnvWriter\DotEnvWriter;

$env = new DotEnvWriter('../.env');
$env->set('ENVIRONMENT', 'dev');
$env->save();

也支持流畅的接口

(new DotEnvWriter('../.env'))
    ->set('DB_HOST', 'localhost')
    ->set('DB_NAME', 'test_db')
    ->save();

输出文件

有几种方法可以从源文件读取,进行一些修改,并将结果写入不同的输出文件。最终结果相同,因此请选择最适合您用例的方法。

$writer = (new DotEnvWriter('.env.example'))
	->setOutputPath('.env');
// ...
$writer->save();

或者也可以

$writer = (new DotEnvWriter('.env.example'));
// ...
$writer->save('.env');

或者使用 load() 方法

$writer = (new DotEnvWriter('.env'))
	->load('.env.example');
// ...
$writer->save();

注释

set() 方法接受一个 $comments 参数。如果省略(或设置为 null),则将保留源文件中任何现有的注释。如果提供了 $comment,则将覆盖现有注释。提供零长度的 $comment 将导致注释被删除。

示例: 设置注释

// source: API_KEY=""
$writer->set('API_KEY', '1234', 'four-digit code');
// result: API_KEY=1234 # four-digit code

删除注释

// source: API_KEY= # four-digit code
$writer->set('API_KEY', '1234', '');
// result: API_KEY=1234

保留现有注释

// source: API_KEY= # four-digit code
$writer->set('API_KEY', '1234');
// result: API_KEY=1234 # four-digit code

导出

解析器支持任何行上的 bash 风格的 export 前缀。 set() 方法将其 4 个参数之一作为 $export 变量。 示例: 默认情况下,保留现有状态

// source: export API_KEY=""
$writer->set('API_KEY', '1234');
// result: export API_KEY=1234

或通过传递布尔值来更改它

// source: export API_KEY=""
$writer->set('API_KEY', '1234', null, false);
// result: API_KEY=1234
$writer->set('API_KEY', '1234', null, true);
// result: export API_KEY=1234

布尔值类型转换

默认情况下,布尔值不会存储为 truefalse

要启用布尔值类型转换,应调用 castBooleans() 方法。

示例

默认行为

$writer->set('REGISTRATION_OPENED', true);
// result: REGISTRATION_OPENED=1


$writer->set('REGISTRATION_OPENED', false);
// result: REGISTRATION_OPENED=

调用 castBooleans() 方法后

$writer->castBooleans();

$writer->set('REGISTRATION_OPENED', true);
// result: REGISTRATION_OPENED=true


$writer->set('REGISTRATION_OPENED', false);
// result: REGISTRATION_OPENED=false

读取变量的值

get 方法允许您找到给定环境变量的值。如果变量不存在,则返回 false,或者返回包含源文件行详细信息的数组。

来源: export ENV="dev" # dev 或 live?

获取命令: $writer->get('ENV');

结果

[
    'line' => 'export ENV="dev" # dev or live?',
    'export' => 'export',
    'key' => 'ENV',
    'value' => 'dev',
    'comment' => 'dev or live?'
];

写入空白/注释行

line 方法将单行未处理输出追加到文件中。它可以用于插入空白行或注释。如果您要添加新变量,则应使用 set 方法,以防止重复。

$writer = (new DotEnvWriter)
    ->line()
    ->line('# App Settings')
    ->line()
    ->set('APP_ENV', 'dev');