spatie/laravel-settings
Strongly typed application settings for Laravel. Define settings classes with typed properties, store values in a repository (database, Redis, etc.), inject settings via the container, and update them easily with $settings->save().
GeneralSettings $settings). No major refactoring needed for basic use cases.json_encode/json_decode, but custom encoders/decoders (e.g., for complex objects) can be plugged in via config.GeneralSettingsRequest), ensuring data integrity during updates.rename or delete operations in migrations may corrupt settings.down() methods)?database repository. Redis support adds flexibility for caching or high-speed access.RefreshDatabase trait for isolation) and PHPUnit..env, config files, hardcoded values) to identify candidates for migration.GeneralSettings for site branding).// Before: config/app.php
'site_name' => 'MyApp',
// After: app/Settings/GeneralSettings.php
class GeneralSettings extends Settings {
public string $site_name = 'MyApp';
public static function group(): string { return 'general'; }
}
auth, payment, analytics).database for most settings; use redis for high-traffic or low-latency needs.'repositories' => [
'database' => ['table' => 'settings'],
'redis' => ['connection' => 'cache'],
],
GeneralSettingsRequest).public function rules(): array {
return [
'site_name' => 'required|string|max:255',
'site_active' => 'boolean',
];
}
Data objects).setting_class_path is configured per project.composer require spatie/laravel-settings.php artisan vendor:publish --provider="Spatie\LaravelSettings\LaravelSettingsServiceProvider" --tag="migrations,config".setting_class_path in config/settings.php (e.g., app_path('Settings')).default_repository and repositories as needed.php artisan make:setting GeneralSettings --group=general.php artisan make:settings-migration CreateGeneralSettings.php artisan migrate.public function __invoke(GeneralSettings $settings).save().make:setting, make:settings-migration streamline development.payment.timeout?").README.md in the app/Settings directory to explain each group.Undefined property errors.php artisan settings:list (if available) or query the settings table directly to inspect values.Spatie\LaravelSettings\Events\SettingsUpdated).down() methods by default. Plan for manual intervention or backup strategies.auth, billing) to reduce lock contention.redis for feature flags).How can I help you explore Laravel packages today?