mr-luke/settings-manager

Laravel 5 包,提供带类型转换的设置管理器。

2.0.0 2023-05-10 21:46 UTC

This package is auto-updated.

Last update: 2024-09-12 14:45:08 UTC


README

Latest Stable Version Total Downloads License

Tests Workflow Quality Gate Status Security Rating Reliability Rating

此包为您的 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 不存在,它将自动调用带有自动检测 typeregister 方法。

此方法不应用于一般设置注册!在开发期间使用 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 提供一系列 prepost 操作事件,以帮助您处理不同的情况。

示例: 您可以使用 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 值的附加选项