PHPackages                             timurturdyev/simple-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. timurturdyev/simple-settings

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

timurturdyev/simple-settings
============================

A simple package for storing settings in laravel

v4.0.0(2mo ago)116MITPHPPHP ^8.2|^8.3|^8.4

Since May 27Pushed 2mo agoCompare

[ Source](https://github.com/TimurTurdyev/Simple-Settings)[ Packagist](https://packagist.org/packages/timurturdyev/simple-settings)[ RSS](/packages/timurturdyev-simple-settings/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (9)Dependencies (6)Versions (14)Used By (0)

Simple Settings для Laravel
===========================

[](#simple-settings-для-laravel)

 [![Simple Settings for Laravel](art/banner.svg)](art/banner.svg)

Лёгкий менеджер настроек для Laravel с поддержкой групп, кэшированием и автоматическим приведением типов.

[English](#english)

---

Требования
----------

[](#требования)

- PHP 8.2+
- Laravel 12.x

Установка
---------

[](#установка)

```
composer require timurturdyev/simple-settings
```

Опубликуйте конфиг и миграцию:

```
php artisan vendor:publish --provider="TimurTurdyev\SimpleSettings\Providers\SettingServiceProvider"
```

Запустите миграцию:

```
php artisan migrate
```

Использование
-------------

[](#использование)

### Через Facade

[](#через-facade)

```
use TimurTurdyev\SimpleSettings\Facades\Setting;

Setting::set('site_name', 'My App');

$name = Setting::get('site_name');              // 'My App'
$name = Setting::get('missing', 'default');    // 'default'

Setting::has('site_name'); // true
Setting::remove('site_name');   // удалить конкретный ключ
Setting::removeAll();           // удалить все настройки группы
Setting::all();        // Collection всех настроек текущей группы
Setting::flushCache();
```

### Через сервис-контейнер

[](#через-сервис-контейнер)

```
use TimurTurdyev\SimpleSettings\Contracts\SettingStorageInterface;

$settings = app(SettingStorageInterface::class);
$settings->set('site_name', 'My App');
```

Группы
------

[](#группы)

Настройки разделены по группам. Группа по умолчанию — `global`.

```
// forGroup() — возвращает новый изолированный экземпляр
$email = Setting::forGroup('email');
$email->set('host', 'smtp.example.com');
$email->get('host'); // 'smtp.example.com'

Setting::get('host'); // null — другая группа

// group() — алиас для forGroup(), тоже возвращает новый экземпляр
Setting::group('email')->get('host');
```

Типы данных
-----------

[](#типы-данных)

Типы определяются и восстанавливаются автоматически:

```
Setting::set('count',   42);          // integer
Setting::set('price',   9.99);        // float
Setting::set('enabled', true);        // boolean
Setting::set('tags',    ['a', 'b']);  // array (хранится как JSON)
Setting::set('key',     null);        // null
```

Массовая запись
---------------

[](#массовая-запись)

```
Setting::set([
    'site_name' => 'My App',
    'site_url'  => 'https://example.com',
    'per_page'  => 15,
]);
```

Кэш сбрасывается один раз после записи всех значений.

Обход кэша
----------

[](#обход-кэша)

```
$value = Setting::get('key', null, fresh: true);
$all   = Setting::all(fresh: true);
```

Artisan-команды
---------------

[](#artisan-команды)

```
# Получить настройку
php artisan setting:get site_name
php artisan setting:get host --group=email
php artisan setting:get host --group=email --fresh

# Установить настройку (тип определяется автоматически)
php artisan setting:set site_name "My App"
php artisan setting:set enabled true
php artisan setting:set per_page 15
php artisan setting:set tags '["a","b"]'
php artisan setting:set host smtp.example.com --group=email

# Список настроек
php artisan setting:list
php artisan setting:list --group=email

# Очистить кэш
php artisan setting:clear
php artisan setting:clear --group=email

# Удалить настройку
php artisan setting:delete site_name
php artisan setting:delete host --group=email

# Удалить все настройки группы (через removeAll)
php artisan setting:delete --group=email
```

События
-------

[](#события)

По умолчанию события **отключены**. Включить можно двумя способами:

**Через конфиг** (глобально для всего приложения):

```
// config/simple-settings.php
'events' => true,
```

**Через метод** (точечно для конкретного вызова):

```
Setting::withEvents()->set('key', 'value');
Setting::withEvents()->get('key');
Setting::withEvents()->remove('key');

// Отключить явно, даже если в конфиге включено:
Setting::withoutEvents()->set('key', 'value');

// Работает в связке с группами:
Setting::forGroup('email')->withEvents()->set('host', 'smtp.example.com');
```

`withEvents()` и `withoutEvents()` возвращают новый экземпляр — текущий не изменяется.

СобытиеКогда срабатывает`SettingRetrieved`при вызове `get()``SettingSaved`при записи через `set()``SettingDeleted`при удалении конкретного ключа через `remove()````
use TimurTurdyev\SimpleSettings\Events\SettingSaved;
use Illuminate\Support\Facades\Event;

Event::listen(SettingSaved::class, function (SettingSaved $event) {
    // $event->key
    // $event->value
    // $event->group
});
```

Валидация
---------

[](#валидация)

Добавьте правила в `config/simple-settings.php`:

```
'validation_rules' => [
    'email'    => 'email',
    'per_page' => 'integer|min:1|max:200',
    'enabled'  => 'boolean',
],
```

При нарушении правила `set()` выбрасывает `InvalidArgumentException`.

Конфигурация
------------

[](#конфигурация)

```
// config/simple-settings.php
return [
    'table_name'       => 'simple_settings', // название таблицы
    'path_cache_key'   => 'simple_settings', // префикс ключей кэша
    'validation_rules' => [],                // правила валидации по ключу
];
```

Схема БД
--------

[](#схема-бд)

```
simple_settings
├── group       string
├── name        string
├── val         text
├── type        char(20)
├── created_at
└── updated_at

PRIMARY KEY (group, name)

```

Справочник API
--------------

[](#справочник-api)

МетодОписание`get(string $key, mixed $default = null, bool $fresh = false)`Получить значение настройки`set(string|array $key, mixed $val = null): void`Установить одно или несколько значений`has(string $key)`Проверить существование ключа`remove(string $key): int`Удалить конкретный ключ`removeAll(): int`Удалить все настройки текущей группы`all(bool $fresh = false)`Получить все настройки группы как Collection`list(?string $group = null)`Получить все записи (raw) с фильтром по группе`groups(): array`Получить список всех групп`flushCache()`Сбросить кэш текущей группы`group(string $group)`Алиас для `forGroup()` — новый экземпляр`forGroup(string $group)`Вернуть новый экземпляр для указанной группы`withEvents()`Вернуть новый экземпляр с включёнными событиями`withoutEvents()`Вернуть новый экземпляр с отключёнными событиями---

English
-------

[](#english)

Lightweight settings manager for Laravel with group namespacing, caching, and automatic type casting.

**Requirements:** PHP 8.2+, Laravel 12.x

**Install:**

```
composer require timurturdyev/simple-settings
php artisan vendor:publish --provider="TimurTurdyev\SimpleSettings\Providers\SettingServiceProvider"
php artisan migrate
```

**Basic usage:**

```
use TimurTurdyev\SimpleSettings\Facades\Setting;

Setting::set('key', 'value');
Setting::get('key');                        // 'value'
Setting::get('missing', 'default');        // 'default'
Setting::set(['key1' => 1, 'key2' => 2]); // bulk
Setting::forGroup('email')->set('host', 'smtp.example.com');
Setting::all(fresh: true);                 // bypass cache
```

Types (`integer`, `float`, `boolean`, `array`, `null`) are detected and restored automatically.

For full documentation see the Russian section above.

###  Health Score

44

—

FairBetter than 92% of packages

Maintenance87

Actively maintained with recent releases

Popularity9

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity61

Established project with proven stability

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~27 days

Total

12

Last Release

62d ago

Major Versions

v1.0.7 → v2.0.02026-02-16

v2.0.0 → v3.0.02026-02-24

v3.0.1 → v4.0.02026-03-17

### Community

Maintainers

![](https://www.gravatar.com/avatar/280b69988c47ccbc8d6f34e3b9a369e11e4a859a4de6e6cfb6510be2ddc55375?d=identicon)[TimurTurdyev](/maintainers/TimurTurdyev)

---

Top Contributors

[![TimurTurdyev](https://avatars.githubusercontent.com/u/42815774?v=4)](https://github.com/TimurTurdyev "TimurTurdyev (1 commits)")

### Embed Badge

![Health badge](/badges/timurturdyev-simple-settings/health.svg)

```
[![Health](https://phpackages.com/badges/timurturdyev-simple-settings/health.svg)](https://phpackages.com/packages/timurturdyev-simple-settings)
```

###  Alternatives

[barryvdh/laravel-ide-helper

Laravel IDE Helper, generates correct PHPDocs for all Facade classes, to improve auto-completion.

14.9k123.0M687](/packages/barryvdh-laravel-ide-helper)[orchestra/canvas

Code Generators for Laravel Applications and Packages

20917.2M158](/packages/orchestra-canvas)[kirschbaum-development/commentions

A package to allow you to create comments, tag users and more

12369.2k](/packages/kirschbaum-development-commentions)[aedart/athenaeum

Athenaeum is a mono repository; a collection of various PHP packages

245.2k](/packages/aedart-athenaeum)[glhd/special

1929.4k](/packages/glhd-special)[bjuppa/laravel-blog

Add blog functionality to your Laravel project

483.3k2](/packages/bjuppa-laravel-blog)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
