elipzis / laravel-simple-setting
为您的 Laravel 应用提供简单的键值类型设置
v1.3.0
2024-04-22 10:09 UTC
Requires
- php: ^8.2
- illuminate/contracts: ^10.0|^11.0
- spatie/laravel-package-tools: ^1.12
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.8
- nunomaduro/collision: ^6.1
- nunomaduro/larastan: ^2.0.1
- orchestra/testbench: ^8.0
- pestphp/pest: ^1.21
- pestphp/pest-plugin-laravel: ^1.1
- phpstan/extension-installer: ^1.1
- phpstan/phpstan-deprecation-rules: ^1.0
- phpstan/phpstan-phpunit: ^1.0
- phpunit/phpunit: ^9.6
- spatie/laravel-ray: ^1.26
README
创建、存储和使用
- 键值设置,
- 从数字到日期到数组,
- 快速访问缓存,
- 并自动同步到配置的磁盘作为静态 JSON 导出。
创建任何您喜欢的设置
Setting::create([ 'key' => 'setting.example.int', 'type' => 'integer', 'value' => 336, ]);
并在您的应用中的任何地方获取它
$example = Setting::getValue('setting.example.int');
或访问静态创建的例如 settings.json 导出,以减少 Web 服务器负载!
安装
您可以通过 composer 安装此包
composer require elipzis/laravel-simple-setting
您可以使用以下命令发布配置文件
php artisan vendor:publish --tag="simple-setting-config"
这是已发布配置文件的内容
return [ 'repository' => [ //The table name where to store the settings. 'table' => 'settings', //The used cache configuration 'cache' => [ 'prefix' => 'settings', 'ttl' => 3600 ] ], 'routing' => [ //Should routes be available to access the settings? 'enabled' => true, //What path prefix to be used 'prefix' => 'setting', //Any middleware? 'middleware' => [], ], 'sync' => [ //Where to statically sync the settings to 'disc' => env('FILESYSTEM_DRIVER', 'local'), //The filename to write to 'filename' => 'settings.json', //Whether to automatically (re-)sync the settings to the disc with every change 'auto' => true ] ];
在您发布迁移之前,如果您想更改例如表名,请先发布配置。
您可以使用以下命令发布和运行迁移
php artisan vendor:publish --tag="simple-setting-migrations"
php artisan migrate
用法
创建
可以使用以下类型
Setting::create([ 'key' => 'setting.example.int', 'type' => 'integer', 'value' => 336, ]);
$now = Carbon::now(); Setting::create([ 'key' => 'setting.example.datetime', 'type' => 'datetime', //or date 'value' => $now->addWeeks(2), ]);
Setting::create([ 'key' => 'setting.example.bool', 'type' => 'boolean', 'value' => false ]);
Setting::create([ 'key' => 'setting.example.array', 'type' => 'array', 'value' => [ 'exampleA' => 'A', 'exampleB' => 'B', 'exampleC' => 'C', ] ]);
Setting::create([ 'key' => 'setting.example.string', 'type' => 'string', 'value' => '((x^0.5)/0.9)+10' ]);
检索
返回整个模型
Setting::get('test');
这将返回类似以下内容
{"test":{"id":1,"key":"test","value":"test","type":"string","created_at":"2021-12-25T10:18:07.000000Z","updated_at":"2021-12-25T10:18:07.000000Z"}}
以 key 为键。
如果您只需要值,请调用
Setting::getValue('test');
它只返回值,在这种情况下是 test。
静态导出
设置的任何更改/创建都会自动更新一个静态导出文件,默认情况下为默认文件系统磁盘上的 settings.json。这应该可以确保通过例如您的 SPA 前端等外部访问时减少 Web 服务器负载,这样它们只需要访问例如 S3 导出的 CDN 缓存文件,而不需要每次都“猛击”Web 服务器。
命令
如果已配置,设置可以自动(重新)同步到您的磁盘以供静态访问。您可以通过调用该命令(重新)同步这些设置
php artisan setting:sync
所有设置都将导出到配置磁盘上的 JSON 文件中。
控制器
如果您启用了路由,您可以通过路由访问设置,例如 GET https://yourdomain.tld/setting/{setting} 通过键获取设置。
注意:路由仅返回值,没有 setter 端点!
测试
composer test
更改日志
有关最近更改的更多信息,请参阅 CHANGELOG。
贡献
有关详细信息,请参阅 CONTRIBUTING。
安全漏洞
有关如何报告安全漏洞的详细信息,请参阅 我们的安全策略。
鸣谢
许可证
MIT 许可证(MIT)。有关更多信息,请参阅 许可证文件。