jobmetric/laravel-setting

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

Maintainers

Package info

github.com/jobmetric/laravel-setting

Homepage

Forum

pkg:composer/jobmetric/laravel-setting

Fund package maintenance!

majidmohammadian

Statistics

Installs: 16

Dependents: 0

Suggesters: 0

Stars: 6

Open Issues: 4

2.0.0 2026-03-19 18:18 UTC

This package is auto-updated.

Last update: 2026-03-19 18:19:04 UTC


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.