PHPackages                             stobys/laravel-settings - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. stobys/laravel-settings

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

stobys/laravel-settings
=======================

Simple key/value settings manager for Laravel with per-user support and file cache.

v2.0.8(1mo ago)069MITPHPPHP ^8.2CI failing

Since Oct 27Pushed 1mo ago1 watchersCompare

[ Source](https://github.com/stobys/laravel-settings)[ Packagist](https://packagist.org/packages/stobys/laravel-settings)[ Docs](https://github.com/stobys/laravel-settings)[ RSS](/packages/stobys-laravel-settings/feed)WikiDiscussions master Synced 2d ago

READMEChangelog (10)Dependencies (8)Versions (17)Used By (0)

laravel-settings
================

[](#laravel-settings)

Prosty pakiet do przechowywania ustawień key/value w bazie danych z obsługą **per-user** i **opcache-friendly plikowym cache**.

Instalacja
----------

[](#instalacja)

```
composer require stobys/laravel-settings
```

Opublikuj config i migrację:

```
php artisan vendor:publish --tag=settings-config
php artisan vendor:publish --tag=settings-migrations
php artisan migrate
```

---

Konfiguracja (`config/settings.php`)
------------------------------------

[](#konfiguracja-configsettingsphp)

```
return [
    'table'   => 'settings',           // nazwa tabeli w bazie
    'columns' => [
        'key'     => 'key',            // kolumna klucza
        'value'   => 'value',          // kolumna wartości
        'user_id' => 'user_id',        // kolumna user_id (null = globalne)
    ],

    // Czy pakiet ma przechowywać i przywracać oryginalny typ PHP?
    'cast_types'  => true,
    'columns_type' => 'type',          // kolumna przechowująca typ

    'cache' => [
        'enabled' => true,
        'path'    => storage_path('framework/settings.php'), // ścieżka pliku cache
    ],
];
```

---

Użycie
------

[](#użycie)

### Facade

[](#facade)

```
use stobys\LaravelSettings\Facades\Settings;

// --- Ustawienia globalne ---
Settings::set('app.name', 'HeRMeS');
Settings::set('maintenance', false);
Settings::set('max_participants', 30);
Settings::set('allowed_roles', ['admin', 'manager']);

$name = Settings::get('app.name');           // 'HeRMeS'
$flag = Settings::get('maintenance');        // false (bool, nie string '0')
$max  = Settings::get('max_participants');   // 30 (int)
$roles = Settings::get('allowed_roles');     // ['admin', 'manager'] (array)

Settings::has('app.name');       // true
Settings::forget('app.name');

// Wiele naraz
Settings::setMany([
    'theme'    => 'dark',
    'language' => 'pl',
]);

// Ustaw domyślną wartość (tylko jeśli klucz nie istnieje)
Settings::setDefault('theme', 'light');

// Wszystkie globalne ustawienia
$all = Settings::all(); // ['theme' => 'dark', 'language' => 'pl', ...]
```

### Per-user

[](#per-user)

```
// Ustawienia dla konkretnego użytkownika
Settings::for(42)->set('theme', 'light');
Settings::for(42)->get('theme');             // 'light'

// Fallback: jeśli user nie ma własnego ustawienia, zwraca globalne
Settings::for(42)->get('language');          // zwróci globalne 'pl'

// Zalogowany użytkownik
Settings::forCurrentUser()->set('notifications', true);
$userSettings = Settings::forCurrentUser()->all();
// ['theme' => 'light', 'language' => 'pl', 'notifications' => true]
// ^-- globalne scalone z per-user; user nadpisuje globalne

// Usunięcie
Settings::for(42)->forget('theme');
```

### Dependency Injection

[](#dependency-injection)

```
use stobys\LaravelSettings\SettingsManager;

class TrainingController extends Controller
{
    public function __construct(private SettingsManager $settings) {}

    public function index()
    {
        $maxParticipants = $this->settings->get('training.max_participants', 20);
        $userTheme = $this->settings->for(auth()->id())->get('theme', 'light');
    }
}
```

---

Cache plikowy
-------------

[](#cache-plikowy)

### Jak działa

[](#jak-działa)

Ustawienia są buforowane w pliku PHP (`storage/framework/settings.php`):

```
