冬天/laravel-config-writer

用于创建和更新 Laravel 配置和 .env 文件的实用工具

v1.1.1 2024-09-18 18:19 UTC

This package is auto-updated.

Last update: 2024-09-18 18:20:33 UTC


README

Version Tests License Discord

这是一个实用工具,可以轻松创建和修改 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 许可证 许可。

安全漏洞

请参阅我们的 安全策略 了解如何报告安全漏洞。