ibrostudio / laravel-neon-config
将 Neon 配置值添加到 Laravel 配置
Requires
- php: ^8.3
- illuminate/contracts: ^10.0||^11.0
- nette/neon: ^3.4
- spatie/laravel-data: ^4.9
- spatie/laravel-package-tools: ^1.16
Requires (Dev)
- larastan/larastan: ^2.9
- laravel/pint: ^1.14
- nunomaduro/collision: ^8.0
- orchestra/testbench: ^9.0.0||^8.22.0
- pestphp/pest: ^3.0
- pestphp/pest-plugin-arch: ^3.0
- pestphp/pest-plugin-laravel: ^3.0
- phpstan/extension-installer: ^1.3
- phpstan/phpstan-deprecation-rules: ^1.1
- phpstan/phpstan-phpunit: ^1.3
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)。有关更多信息,请参阅 许可文件。