jobmetric/laravel-setting
A Laravel package for managing application settings with a flexible key-value store, letting you define, save, and retrieve configuration values at runtime. Useful for admin-editable options like site name, contact details, and feature toggles without touching config files.
Architecture fit — Conventional Laravel package shape: service provider, facade, publishable config, DB-backed settings table, service class, and a global helper. Reasonable fit for applications that need runtime-editable configuration without redeploying. Persistence is assumed to be the database; the notes show no evidence of an abstraction over cache or storage drivers.
Integration feasibility — Low-to-moderate effort. Install, publish config, run migration, optionally override the table name, then consume via facade or helper. The two friction points are the public API rename and unclear config-cache semantics.
Technical risk
| Severity | Item | Why |
|---|---|---|
| High | store() → dispatch() rename in a minor release |
Callers break at runtime with BadMethodCallException; strong signal of a semver policy gap |
| High | License change | Unknown direction; blocks adoption pending legal review |
| Medium | "Change value config cache" | Ambiguous — key, TTL, or default store changed? Silent staleness risk |
| Medium | "Load setting in global object" | Boot-time global state; stale values, memory retention, test isolation issues |
| Medium | Facade accessor bug fix | Behavior change; any code compensating for the old bug now behaves differently |
| Low | New helper function | Global namespace collision with other settings packages |
| Low | Dependency version change | Tightened or loosened constraints unknown; affects reproducibility |
| Low | Remove .gitignore |
Confirm no .env/vendor artifacts ship in the package |
Key questions
store() retained as a deprecated alias, or hard-removed in 1.1.0?Stack fit — Standard service-provider + facade + publishable-config pattern. Works with modern Laravel versions, but setting reads must not depend on mutating config at runtime, since we run config:cache in production.
Migration path — Pilot in one non-critical service:
1.0.x baseline in composer.json.1.1.0.->store(, Setting::store, app(...)->store.Compatibility — Verify the PHP/Laravel version matrix, behavior under array/database/redis cache drivers, and that composer dump-autoload --optimize succeeds with the new global helper.
Sequencing
dispatch().Avoid upgrading multiple services concurrently — the rename fails silently until the affected code path executes.
Maintenance — API churn inside a minor release indicates the public surface is still settling. Adopt a strict pin (~1.1.0) and schedule periodic review rather than tracking latest.
Support — Documentation was added this release, which is positive. Confirm upgrade notes exist for the rename, check issue-tracker responsiveness, and assess maintainer count. A single-maintainer project warrants a contingency plan (fork or vendored copy).
Scaling — DB-backed settings are typically read per request, and loading them into a global object at boot can amplify that cost. With caching enabled this is negligible; without it, expect an extra query per request and write contention on the settings table. Clarify cache invalidation on write and consistency across multiple app instances.
Failure modes
BadMethodCallException from the renamed method — loud, caught in canary.Ramp-up — Roughly half a day for a Laravel developer to publish config, migrate, and wire the facade or helper. Add a day for the 1.1.0 rename sweep and cache-behavior verification.
Recommendation — Do not adopt 1.1.0 broadly until the license and semver questions are answered. A single-service pilot is justified: the configurable table name, helper, and global setting access materially reduce integration glue, and the rename is easy to detect in a contained canary.
How can I help you explore Laravel packages today?