markwalet / dotenv-manager
一个帮助您以编程方式编辑.env文件的Laravel包。
Requires
- php: 8.*
- laravel/framework: ~8.74|^9.0|^10.0
Requires (Dev)
- orchestra/testbench: 6.*|7.*|8.*
- phpunit/phpunit: ~9.3
README
一个帮助您以编程方式编辑.env文件的PHP包。它非常适合构建安装CLI之类的工具。
安装
您可以使用composer安装此包。
composer require markwalet/dotenv-manager
此包适用于每个PHP项目。
Laravel
可选的DotenvManagerServiceProvider
使此包适合Laravel项目。
从Laravel 5.5开始,由于包自动发现功能,您无需再注册服务提供程序。
如果您想手动注册服务提供程序(对于旧版本是必需的),请将以下行添加到您的config/app.php
文件中
MarkWalet\DotenvManager\DotenvManagerServiceProvider::class
服务提供程序也兼容Laravel Lumen。只需将以下行添加到您的bootstrap/app.php
文件中
$app->register(\MarkWalet\DotenvManager\DotenvManagerServiceProvider::class);
用法
您可以通过使用Laravel服务容器解析dotenv管理器来获取dotenv管理器。这将为您提供具有正确依赖关系的单例MarkWalet\DotenvManager\DotenvManager
实例。
$dotenv = app(DotenvManager::class);
当您不使用Laravel时,您也可以手动设置DotenvManager
类。
一旦您有了dotenv实例,您就可以向dotenv文件添加新值
$dotenv->add('FOO', 'Bar')->after('EXISTING_KEY');
如果您未指定新值的位置,该值将添加到文件末尾。
您还可以编辑dotenv变量
$dotenv->update('EXISTING_KEY', 'updatedValue');
这将用updatedValue
替换EXISTING_KEY
的原始值。
所有值都将自动格式化为有效的dotenv值。
修改多行
当您想要对文件应用多个更改时,可以使用mutate()
方法。语法与Laravel迁移中的语法非常相似
/** * Original content: * * TEST1=value1 * TEST2=value2 * TEST3=value3 */ $dotenv->mutate(function(DotenvBuilder $builder){ $builder->add('TEST4', 'escaped value'); $builder->update('TEST2', 'updated')->after('TEST3'); $builder->delete('TEST1'); }); /** * New content: * * TEST3=value3 * TEST2=updated * TEST4="escaped value" */
可用方法
下面您将找到每个可用方法和其底层类。这些方法可以在DotenvManager
类本身上调用,也可以在修改dotenv文件时获得的DotenvBuilder
上调用。
扩展构建器
您还可以通过实现自己的Change
类来扩展构建器。在下面的示例中,我们创建了一个可以快速增加值的类
use MarkWalet\DotenvManager\Changes\Change; class Increment extends Change { use HasKey; function __construct(string $key) { $this->key = $key; } public function apply(string $content): string { $search = '/'.$this->getKey().'=(.*)/'; preg_match($search, $content, $matches); $value = $matches[1]; $replacement = $this->getKey().'='.($value + 1); return preg_replace($search, $replacement, $content); } } $dotenv->extend('increment', Increment::class);
在扩展了构建器之后,我们可以通过DotenvManager
实例调用它
/** * Original content: * * TEST1=value1 * INCREMENT=56 */ $dotenv->increment('INCREMENT'); /** * New content: * * TEST1=value1 * INCREMENT=57 */