camc/lara-settings

用于在数据库中存储Laravel应用程序设置的抽象

v1.2.0 2024-07-15 14:49 UTC

This package is auto-updated.

Last update: 2024-09-15 15:15:07 UTC


README

Latest Stable Version MIT Licensed GitHub Tests Action Status

此Laravel包提供了一个简单的抽象,用于在数据库中存储应用程序设置。它模仿了核心Laravel的config辅助函数和Config外观的基本行为,但允许值存储在数据库中,以便更动态地管理。

Camc\LaraSettings\LaraSetting::create(['key' => 'foo', 'value' => 'bar']);
// with a helper
lara_settings('foo'); // bar
// or with the facade
LaraSettings::get('foo'); // bar

管理员界面或使用类似Tinkerwell的工具将允许更新任何应用程序实例的这些设置。

LaraSettings::set('foo', 'baz');
lara_settings('foo'); // baz

在底层,值被缓存以最小化检索值的数据库访问。

支持点符号来检索值

Camc\LaraSettings\LaraSetting::create([
    'key' => 'foo', 
    'value' => ['bar' => 'baz']
]);
lara_settings('foo.bar') // baz

并提供默认值给getter以处理null值或缺失的设置

Camc\LaraSettings\Models\LaraSetting::whereKey('foo')->first()->delete();
lara_settings('foo', 'deleted'); // deleted

// a setting instance will be created if not yet defined
LaraSettings::set('foo', null);
lara_settings('foo', 'null value'); // "null value"

测试支持

您可以使用类似于其他Laravel外观的方法来模拟外观

LaraSettings::fake(['a_fake_key' => 'a fake value']);

安装

composer require camc/lara-settings

配置

配置目前支持两个设置

  1. model_table - 定义LaraSetting模型使用的表名。默认为lara_settings_settings
  2. cache_key - 缓存设置存储的键。默认为lara-settings

可以通过artisan发布配置文件

php artisan vendor:publish --provider=lara-settings-config

用法

除了上述示例之外,使用初始值对设置进行播种可能很有用

// database/seeders/settings/default.php
<?php

return [
    'foo' => ['bar' => 'baz']
];
// database/seeders

/**
* Only load settings if the file is present
*/
class LaraSettingsSeeder extends Seeder
{
    public function run()
    {
        $settingsFile = require(__DIR__ . '/settings/default.php';
        if (file_exists($settingsFile)) {
            foreach (require($settingsFile) as $key => $value) {
                LaraSettings::set($key, $value);
            }
        }
    } 
}

通过检查文件是否存在,可以不提交设置文件,然后为任何给定的安装上传自定义文件。

开发

测试

composer test

代码风格检查

composer format

变更日志

请参阅变更日志以获取更新历史。

未来开发

管理员支持

LaraSetting模型有一个未使用的description属性,它是用于存储设置描述文本的占位符,该文本可以在管理员UI中显示。此字段不打算进行动态更改,但应该提供一个界面以使在管理员界面中呈现设置变得简单。

鉴于管理员实现方式的多样性,不太可能向包中添加UI,但命令行工具可能很有用。

模型验证

LaraSetting接受字符串或数组作为值。提供机制来验证内容等可能很有用。

许可证

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