Repository navigation
Releases: TimurTurdyev/Simple-Settings
Releases · TimurTurdyev/Simple-Settings
Release list
v6.0.0 — audit без событий, батч-запись
Ломающие изменения
- Удалено событие
SettingRetrieved(срабатывало на каждое чтение, пользы не приносило). - Активити-лог развязан с событиями: пишется напрямую из
SettingStorage, достаточноaudit.enabled = true, флагeventsне нужен. Обратная сторона:withoutEvents()иevents = falseбольше не отключают лог — толькоaudit.enabled. oldValueиexistedвSettingSaved/SettingDeletedзаполняются всегда при включённых событиях (раньше — только при включённом audit).remove()несуществующего ключа иremoveAll()пустой группы больше не эмитят событий и не пишут строк в лог.set([...])стал атомарным: валидация всех ключей до записи; упала на одном ключе — не сохранился ни один (раньше часть успевала записаться).
Что нового
- Батч-запись:
set([...])выполняет один upsert-запрос вместо N; audit-строки тоже вставляются одной пачкой. - Нормализация типов сведена в
CastsValue::normalizeType(); чтение legacy-типаdoubleиз старых строк и export-файлов сохранено. - Добавлены Makefile (
make help) и CI: матрица PHP 8.2–8.5 × Laravel 12–13. - Тесты: 72 зелёных (было 66), покрыты все новые сценарии v6.
Обновление
Пошаговый список — в разделе «Обновление до v6» в README.
Полный список изменений
v5.0.2 — поддержка PHP 8.5
Что нового
- В
composer.jsonявно добавлена поддержка PHP 8.5: ограничение теперь^8.2|^8.3|^8.4|^8.5. - Тесты прогнаны на PHP 8.5.5 — все зелёные (66 тестов).
Изменений в коде нет — только расширение объявленной совместимости платформы.
Полный список изменений
v5.0.1
Bug Fix
Fix: SettingStorage::all() returns __PHP_Incomplete_Class instead of Collection when using the database cache driver (CACHE_STORE=database).
Root Cause
-
Cross-request:
all()cached aCollectionobject. The database cache driver usesserialize()— onunserialize()in the next request, ifCollectionisn't autoloaded yet, PHP returns__PHP_Incomplete_Class. -
Within-request:
flushCache()usedCache::forget()which only clears the persistent store, leaving theMemoizedStorein-memory layer stale.
Changes
all()now caches a plain array (->toArray()) and wraps incollect()on readflushCache()now usesCache::memo()->forget()to clear both layers- Self-healing guard for legacy cached values
Upgrade
No breaking changes. composer update timurturdyev/simple-settings