walidos / laravel-settings
Laravel应用及模型设置
Requires
- php: ^8.1
- ext-json: *
- illuminate/database: ^10.0|^11.0
- illuminate/support: ^10.0|^11.0
Requires (Dev)
- laravel/pint: ^1.5
- mockery/mockery: ^1.5
- orchestra/testbench: ^8.0
- phpunit/phpunit: ^10.0
This package is auto-updated.
Last update: 2024-09-21 15:37:23 UTC
README
此包允许您存储全局和模型特定的Laravel设置。设置值会被类型转换并正确存储。您也可以定义自己的转换规则并存储仓库。
安装
通过composer安装此包
composer require smartisan/laravel-settings
使用以下命令发布配置文件
php artisan vendor:publish --provider="Smartisan\Settings\SettingsServiceProvider" --tag="config"
使用以下命令发布迁移文件
php artisan vendor:publish --provider="Smartisan\Settings\SettingsServiceProvider" --tag="migrations"
最后,使用以下命令运行迁移
php artisan migrate
使用方法
该包提供了各种API来访问设置管理器。您可以使用Settings外观、settings()辅助方法和在您的模型上通过HasSettings特质来访问它。
存储设置
您可以为设置设置单个条目或多个条目。对象的值将根据settings.php配置文件中定义的规则进行类型转换。
- 单个条目
Settings::set('key', 'value');
- 多个条目
您可以通过传递键值对的关联数组来设置多个设置条目。将对所有有效负载应用转换,即使是嵌套数组。
Settings::set([ 'k1' => Carbon::now(), 'k2' => [ 'k3' => $user, 'k4' => [ 'k5' => $model ], ] ]);
- 指定设置组
您可以通过调用group方法将设置分类到组中。
Settings::group('name')->set('key', 'value'); Settings::group('name')->set([ 'k1' => 'v1', 'k2' => 'v2', ]);
- 模型特定设置
也可以通过调用for方法为特定模型设置设置。
Settings::for($model)->set('key', 'value'); Settings::for($model)->set([ 'k1' => 'v1', 'k2' => 'v2', ]);
- 混合过滤器
您可以像这样混合所有过滤器
Settings::for($model)->group('name')->set('key', 'value');
检索设置
您可以检索一个或多个条目,如果不存在则指定默认值。
- 单个条目
Settings::get('k1', 'default');
- 多个条目
如果条目键不存在,则将默认值替换
Settings::get(['k1', 'k2', 'k3'], 'default');
- 所有条目
如果您想检索所有条目,只需调用all方法。您还可以指定模型或组。还可以排除某些特定键。
注意:请记住,如果不指定组或模型而检索所有条目,将检索没有设置组或模型的条目。您可以将其视为(全局应用设置)。
Settings::all(); Settings::for($model)->all(); Settings::for($model)->group('name')->all(); Settings::except('k1', 'k2')->for($model)->group('name')->all(); Settings::except('k1')->for($model)->group('name')->all();
忘记条目
您可以通过调用forget方法删除条目。
Settings::forget('key'); Settings::for($model)->group('name')->forget('key');
确定存在性
您可以确定给定的设置条目键是否存在或不存在。
Settings::exist('key'); Settings::for($model)->exist('key'); Settings::for($model)->group('name')->exist('key');
辅助方法
该包还提供了一种设置辅助方法,您可以使用它而不是使用Settings外观。
settings()->set('key', 'value'); ...
HasSettings特质
您还可以在Eloquent模型上使用HasSettings特质。
- 首先准备您的模型
use Smartisan\Settings\HasSettings; class User extends Model { use HasSettings; }
- 现在您可以在该模型上调用settings()方法。这等价于
Settings::for($model)
$user->settings()->set('k1', 'v1'); ...
自定义仓库
如果您不想使用数据库仓库,可以轻松创建自己的设置仓库。要这样做
- 创建一个实现Repository接口的仓库类,并实现以下方法
use Smartisan\Settings\Contracts\Repository; class FileRepository implements Repository { public function get($key,$default = null) { // } public function set($key,$value = null) { // } public function forget($key) { // } public function all() { // } }
- 在设置配置文件中,将您自己的仓库配置添加到repositories属性中
'repositories' => [ ... 'file' => [ ... ] ],
- 将设置配置文件中的默认仓库更改为您自己的仓库实现
自定义转换
该包允许您轻松创建任何对象类型的自定义转换规则。
- 创建自己的实现Castable接口的cast类。
注意:set方法在将条目的值存储到仓库时调用,而get方法在从仓库检索值时调用。
use Smartisan\Settings\Contracts\Castable; class CustomCast implements Castable { public function set($payload) { // } public function get($payload) { // } }
- 将转换添加到settings配置文件中casts数组的数组中
'casts' => [ ... CustomDataType::class => CustomCast::class ]
注意:如果您想向您的模型传递参数,您可以使用模型的对象而不是模型类名来设置。
'casts' => [ ... CustomDataType::class => new CustomCast('param') ]
缓存设置
您可以在settings.php配置文件中轻松启用或禁用缓存设置。您还可以指定要使用的缓存存储。
'cache' => [ 'enabled' => env('SETTINGS_CACHE_ENABLED', false), 'store' => null, 'prefix' => null, ],
测试
要运行包的测试,只需调用以下命令:
composer test
变更日志
有关最近更改的更多信息,请参阅变更日志。
致谢
替代方案
许可证
MIT许可证(MIT)。有关更多信息,请参阅许可证文件。