camc / lara-settings
用于在数据库中存储Laravel应用程序设置的抽象
v1.2.0
2024-07-15 14:49 UTC
Requires
- php: ^8.0
- laravel/framework: ^8|^9|^10
Requires (Dev)
- fakerphp/faker: ^1.19
- friendsofphp/php-cs-fixer: ^3.8
- orchestra/testbench: ^7.5|^8
- phpunit/phpunit: ^9.5
README
此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
配置
配置目前支持两个设置
model_table
- 定义LaraSetting
模型使用的表名。默认为lara_settings_settings
。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)。有关更多信息,请参阅许可证文件。