jobmetric/laravel-setting 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

jobmetric/laravel-setting

Composer 安装命令:

composer require jobmetric/laravel-setting

包简介

This is a package for a dynamic setting across different Laravel projects.

README 文档

README

Contributors Forks Stargazers MIT License LinkedIn

Laravel Setting

Build Dynamic Settings. Manage Them Safely.

Laravel Setting lets you define application settings as form-driven classes and store/retrieve them from a database-backed cache. Stop scattering config values across controllers and configs. Use a unified settings layer with validation, caching, discovery, and clear storage keys.

Why Laravel Setting?

Form-Driven Settings

Define each setting form by extending JobMetric\Setting\Contracts\AbstractSetting and returning a JobMetric\Form\FormBuilder that describes fields.

Application-Key Storage

Each setting form produces a stable formName() (application_key). Values are stored per field under that form.

Fast Reads with Cache

Reads are cached under config('setting.cache_key') (default: SETTING). Cache is invalidated whenever settings are stored or forgotten.

Events and Lifecycle Control

Optionally fire StoreSettingEvent and ForgetSettingEvent when storing or deleting settings.

Namespaced Discovery

Register one or more namespaces in SettingNamespaceRegistry. SettingRegistry can discover and validate all AbstractSetting subclasses inside them.

What is a Setting Form?

A setting form is a class that extends AbstractSetting and implements:

  • application()
  • key()
  • title()
  • description()
  • form() (returns FormBuilder)

From these, formName() is built as application() . '_' . key() and used as the main storage identifier (form column in the settings table).

What Awaits You?

By adopting Laravel Setting, you can:

  • Create setting form classes with setting:make
  • Store values safely with Setting::dispatch() (class-based) or Setting::dispatchByForm() (raw)
  • Retrieve values with Setting::get(), Setting::form() and class helpers like Setting::getFromClass()
  • Invalidate cache via setting:clear
  • Discover all setting forms through SettingNamespaceRegistry and SettingRegistry
  • Listen to store/forget events with optional dispatching control

Quick Start

Install Laravel Setting via Composer:

composer require jobmetric/laravel-setting

Run migrations:

php artisan migrate

Create a setting form class:

php artisan setting:make ConfigSetting --application=app --title="Config" --description="Application configuration"

Edit the generated class and implement form() by adding the desired fields using FormBuilder.

Usage

Store settings by form name (raw)

Use dispatchByForm() (or the dispatchSetting() helper). Keys in the object must start with the form prefix ({application_key}_...).

use JobMetric\Setting\Facades\Setting;

Setting::dispatchByForm('app_config', [
    'app_config_site_name' => 'My Site',
    'app_config_site_url'  => 'https://example.com',
]);

Or via helper:

dispatchSetting('app_config', [
    'app_config_site_name' => 'My Site',
]);

Store settings by setting class (validated)

Use dispatch() (or dispatchSettingFromClass()) for class-based dispatch with DTO validation via FormBuilderRequest.

use JobMetric\Setting\Facades\Setting;
use App\Settings\ConfigSetting;

Setting::dispatch(ConfigSetting::class, [
    'site_name' => 'My Site',
]);

Read settings

use JobMetric\Setting\Facades\Setting;

$siteName = Setting::get('app_config_site_name');
$form = Setting::form('app_config');

Read from a setting class

use JobMetric\Setting\Facades\Setting;
use App\Settings\ConfigSetting;

$siteName = Setting::getFromClass(ConfigSetting::class, 'site_name');
$form = Setting::getFromClass(ConfigSetting::class, null);

Forget settings (delete + cache invalidation)

use JobMetric\Setting\Facades\Setting;

Setting::forget('app_config');

Clear cache

php artisan setting:clear

Documentation

Ready to transform your Laravel applications? Our comprehensive documentation is your gateway to mastering Laravel Setting:

📚 Read Full Documentation ->

The documentation includes:

  • Getting Started - installation and migration steps
  • Setting Forms - AbstractSetting, formName(), and FormBuilder
  • Setting Service - storing, forgetting, cache invalidation, and retrieval APIs
  • Registries - SettingNamespaceRegistry and SettingRegistry discovery rules
  • Commands - setting:make, setting:clear
  • Events - StoreSettingEvent and ForgetSettingEvent
  • Helpers - dispatchSetting, dispatchSettingFromClass, and read/exists utilities
  • Testing - package tests and common verification flows

Contributing

Thank you for participating in laravel-setting. A contribution guide can be found here.

License

The laravel-setting is open-sourced software licensed under the MIT license. See License File for more information.

jobmetric/laravel-setting 适用场景与选型建议

jobmetric/laravel-setting 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 39 次下载、GitHub Stars 达 6, 最近一次更新时间为 2023 年 12 月 22 日, 在 PHP 生态内属于活跃度较高的组件。

它主要适用于以下技术方向: 「package」 「config」 「laravel」 「setting」 「jobmetric」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。

我们在过去多个企业项目中使用过 jobmetric/laravel-setting 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 jobmetric/laravel-setting 我们能提供哪些服务?
定制开发 / 二次开发

基于 jobmetric/laravel-setting 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 39
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 6
  • 点击次数: 13
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 6
  • Watchers: 2
  • Forks: 3
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2023-12-22