ibrostudio / laravel-neon-config

将 Neon 配置值添加到 Laravel 配置

1.0.0 2024-09-25 14:01 UTC

This package is auto-updated.

Last update: 2024-09-25 14:03:04 UTC


README

Neon 配置管理工具,适用于 Laravel 扩展包。

本扩展包的目标是提供一个可供 Laravel 应用之外使用的配置文件。

例如:用作其他扩展包开发依赖的扩展包。

本扩展包允许您使用 .neon 文件覆盖 Laravel 配置文件。

安装

composer require ibrostudio/laravel-neon-config

将 trait UseNeonConfig 添加到您的包服务提供器中,并定义“neon 到配置”的映射

use IBroStudio\NeonConfig\Concerns\UseNeonConfig;

class PackageServiceProvider extends ServiceProvider
{
    use UseNeonConfig;
    
    public function register()
    {
        $this->handleNeon('package-neon-file')->forConfig('package-config-key');
    }
...

如果您的包使用 Spatie 的 package-skeleton-laravel 中的 PackageServiceProvider,并且您只处理单个配置文件,则可以省略名称参数

use IBroStudio\NeonConfig\Concerns\UseNeonConfig;

class PackageServiceProvider extends PackageServiceProvider
{
    use UseNeonConfig;
    
    public function packageRegistered(): void
    {
        $this->handleNeon()->forConfig();
    }
...

使用方法

在包的根目录下创建一个 .neon 文件,它将覆盖您的包配置。

config/your-package.php

return [
    'key1' => 'value1',
    'key2' => 'value2',
    'array' => [
        'array_key1' => 'array_value1',
        'array_key2' => 'array_value2',
    ],
];

your-package.neon

key1: new value
array:
    - new_array_key: new_value
    - array_key2: array_value

值按键合并,这意味着:具有相同键的值将被替换,省略的键将被保留,新的键将被添加。

类型转换和动态值

枚举

如果您的配置使用枚举,则可以在 neon 文件中反映和转换它。

config/your-package.php

return [
    'key1' => SomeEnumClass::VALUE,
];

在您的包根目录下创建一个名为 neon-config.neon 的文件

neon-config.neon

casts:
    - key1: \Namespace\SomeEnumClass

然后,以纯文本形式写入覆盖,并使用要使用的枚举值:your-package.neon

key1: newValue

现在,调用 config('your-package.key1') 将返回枚举 \Namespace\SomeEnumClass::NEW_VALUE 实例。

枚举数组

config/your-package.php

return [
    'key1' => [
        SomeEnumClass::VALUE1,
        SomeEnumClass::VALUE2,
        SomeEnumClass::VALUE3,
    ],
];

neon-config.neon

casts:
    - key1: AsEnumCollection::\Namespace\SomeEnumClass

your-package.neon

key1:
    - value4
    - value5
    - value6

来自其他配置或环境变量的动态值

config/your-package.php

return [
    'key1' => config('some.config', 'default value'),
    'key2' => env('MY_ENV_VAR', 'default value' ),
];

您可以保持对 config() 和 env() 方法的使用,并给予覆盖其键的可能

neon-config.neon

casts:
    - key1: AsConfig::some.config
    - key2: AsEnv::MY_ENV_VAR

your-package.neon

key1: other.config.key(type: config, default: 'other default value')
key2: OTHER_ENV(type: env)

测试

composer test

变更日志

请参阅 CHANGELOG 了解最近更改的更多信息。

许可

MIT 许可证 (MIT)。有关更多信息,请参阅 许可文件