oohology / dotenvwriter
PHP中编辑 .env 文件的接口。
v1.3.1
2018-04-23 13:59 UTC
Requires
- php: >=5.4.0
Requires (Dev)
- phpunit/phpunit: ^4.8 || ^5.0
README
PHP中编辑 .env 文件的接口
注意:这可能在生产环境中不推荐使用,但对于自动化安装任务等可能很有用。
基本用法
通常,您将打开一个 .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
布尔值类型转换
默认情况下,布尔值不会存储为 true
或 false
。
要启用布尔值类型转换,应调用 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');