冬天 / laravel-config-writer
用于创建和更新 Laravel 配置和 .env 文件的实用工具
Requires
- php: ^7.4.0 || ^8.0
- nikic/php-parser: ^4.10 || ^5.10
Requires (Dev)
- phpstan/phpstan: ^1.6
- phpunit/phpunit: ^9.5
README
这是一个实用工具,可以轻松创建和修改 Laravel 风格的 PHP 配置文件和环境文件,同时保持文件中的格式和注释。该工具通过使用 PHP 解析器库 解析配置文件,将其转换为抽象语法树,然后仔细修改所需的配置值来工作。
这个库最初是作为 Storm 库 的 Winter CMS 的一部分编写的,但后来被提取出来并作为一个独立的库重新利用。
安装
composer require winter/laravel-config-writer
用法
PHP 数组文件
您可以使用 Winter\LaravelConfigWriter\ArrayFile
类来修改 Laravel 风格的 PHP 配置文件(返回单个数组的 PHP 文件)。使用 open
方法打开现有文件以进行修改,或创建新的配置文件。
use Winter\LaravelConfigWriter\ArrayFile; $config = ArrayFile::open(base_path('config/app.php'));
您可以使用 set
方法设置值。此方法可以使用流畅的方式使用,也可以通过单个键值或键值数组调用。
$config->set('name', 'Winter CMS'); $config ->set('locale', 'en_US') ->set('fallbackLocale', 'en'); $config->set([ 'trustedHosts' => true, 'trustedProxies' => '*', ]);
您还可以通过指定键的点表示法或嵌套数组来设置数组中的深层值。
$config->set('connections.mysql.host', 'localhost'); $config->set([ 'connections' => [ 'sqlite' => [ 'database' => 'database.sqlite', 'driver' => 'sqlite', 'foreign_key_constraints' => true, 'prefix' => '', 'url' => null, ], ], ]);
要完成所有更改,请使用 write
方法将更改写入打开的文件。
$config->write();
如果需要,您还可以将更改写入另一个文件。
$config->write('path/to/newfile.php');
或者,您可以直接将更改渲染为字符串。
$config->render();
作为值的函数调用
您可以使用 function
方法将函数调用添加到配置文件中。此方法的第一个参数定义要调用的函数,第二个参数接受要提供给函数的参数数组。
$config->set('name', $config->function('env', ['APP_NAME', 'Winter CMS']));
作为值的常量
您可以使用 constant
方法将常量添加到配置文件中。所需的唯一参数是常量的名称。
$config->set('foo.bar', $config->constant('My\Class::CONSTANT'));
排序配置文件
您可以使用 sort
方法按字母顺序对配置键进行排序。这将排序所有当前配置值。
$config->sort();
默认情况下,这将按升序字母顺序对键进行排序。要按相反方向排序,请包含 ArrayFile::SORT_DESC
参数。
$config->sort(ArrayFile::SORT_DESC);
环境文件
此实用工具库还允许操作环境文件,通常在项目的 .env
文件中找到。使用 Winter\LaravelConfigWriter\EnvFile::open()
方法可以打开或创建用于修改的环境文件。
use Winter\LaravelConfigWriter\EnvFile; $env = EnvFile::open(base_path('.env'));
您可以使用 set
方法设置值。此方法可以使用流畅的方式使用,也可以通过单个键值或键值数组调用。
$env->set('APP_NAME', 'Winter CMS'); $env ->set('APP_URL', 'https://wintercms.com') ->set('APP_ENV', 'production'); $env->set([ 'DB_CONNECTION' => 'sqlite', 'DB_DATABASE' => 'database.sqlite', ]);
注意:环境文件不支持数组。
您可以使用 addEmptyLine
方法在环境文件中添加空行。这允许您分隔环境变量组。
$env->set('FOO', 'bar'); $env->addEmptyLine(); $env->set('BAR', 'foo');
要完成所有更改,请使用 write
方法将更改写入打开的文件。
$env->write();
如果需要,您还可以将更改写入另一个文件。
$env->write(base_path('.env.local'));
或者,您可以直接将更改渲染为字符串。
$env->render();
许可证
此实用工具库是开源软件,根据 MIT 许可证 许可。
安全漏洞
请参阅我们的 安全策略 了解如何报告安全漏洞。