mr-luke / settings-manager
Laravel 5 包,提供带类型转换的设置管理器。
Requires
- php: ^8.1
- laravel/framework: ^10.0|^9.0|^8.0
- mr-luke/configuration: ^1.0
Requires (Dev)
- fakerphp/faker: ^1.21
- mockery/mockery: ^1.0
- orchestra/testbench: ^8.0
- phpunit/phpunit: ^9.0
README
此包为您的 Laravel 应用提供带有类型值的多重设置包管理功能。
入门指南
设置管理器支持的版本
- Laravel 10
- Laravel 9
- Laravel 8
安装
要通过 composer 安装,请在您的 composer.json 文件中添加以下内容,并运行 composer update
{ "require": { "mr-luke/settings-manager": "~2.0" } }
或者使用以下命令
composer require "mr-luke/settings-manager"
接下来,将服务提供者添加到 app/config/app.php
Mrluke\Settings\SettingsServiceProvider::class,
注意:包是自动可发现的!
配置
要使用 SettingsManager
,您需要首先设置您的 Bags
。将您自己的一个添加到 配置文件 中的 bags
'bags' => [ 'general' => [ // Given key is used as a Bag name 'driver' => 'database', // One of available drivers 'cache' => true, // Should be Cached 'lifetime' => 60 // Cache lifetime in minutes ], ],
您可以通过新的 driver
或不同的 json
文件设置不同的数据库连接或表。
'drivers' => [ 'database' => [ 'class' => \Mrluke\Settings\Drivers\Database::class, 'connection' => 'mysql', 'table' => 'settings', ], 'json' => [ 'class' => \Mrluke\Settings\Drivers\Json::class, 'path' => base_path('storage/app/settings/'), 'file' => 'settings.json', ] ],
您还可以通过命令发布配置文件
php artisan vendor:publish
使用
外观
您可以通过 Mrluke\Settings\Facades\Settings
访问 Manager
和您的 Bags
。
类型
SettingsManager
是一个类型转换工具,在整个过程中都关注类型。
示例: 您可以将 string 5.567
传递给 set
方法以设置 ratio
设置(float
),而 SettingsManager
将在幕后将该值转换为 float 5.567
。
无论您请求哪个键,它都将是正确的类型。但一切始于 注册
的点...
注册新索引
要注册新值,请使用
$value = Settings::register(string $key, $value, string $type);
此方法返回给定 $value
转换为给定 $type
。
访问索引
要获取值,请使用
$value = Settings::get(string $key, $default = null);
如果给定的 $key
不在 Bag
中,此方法返回 $default
。否则,$value
将转换为已注册的 type
。
设置索引的新值
要设置新值,请使用
$value = Settings::set(string $key, $value);
此方法返回已注册的 type
转换的 $value
。如果给定的 $key
不存在,它将自动调用带有自动检测 type
的 register
方法。
此方法不应用于一般设置注册!在开发期间使用 Eventing
来检测所有需要的设置。
忘记索引
要忘记索引,请使用
Settings::forget(string $key);
默认 Bag
与指定 Bag
要访问特定的 Bag
,请使用 bag 访问器方法
$value = Settings::bag(string $name)->get(string $key, $default = null);
助手
您可以通过辅助函数访问 SettingsManager
。
// Get index settings(string $key); // Set value settings([string $key => $value]); // Get instance and perform action settings()->forget(string $key);
事件
SettingsManager
提供一系列 pre
和 post
操作事件,以帮助您处理不同的情况。
示例: 您可以使用 Mrluke\Settings\Events\Registered
事件来准备生产设置的全列表。
命名空间 Mrluke\Settings\Events
忘记
已忘记
加载
已加载
注册
已注册
更新
已更新
JSON 结构
SettingsManager
为配置提供 JSON 驱动程序,这些配置可以与前端应用共享。其结构如下所示
{ "key": { "type": "<type>", "value": "<value>" }, "another": { "type": "<type>", "value": "<value>" } }
计划
- Artisan 命令
- 用于
bool
键的 Blade 助手 - 从
get()
方法存储default
值的附加选项