Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Settings Bundle Laravel Package

hexanet/settings-bundle

hexanet/settings-bundle provides persistent, database-backed key-value settings for PHP applications. Store, retrieve, and update configuration values at runtime through a simple API, with support for typed values and defaults—so settings stay editable without redeploying code.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit — mismatch, now confirmed explicitly by the release. hexanet/settings-bundle is a Symfony bundle, and v2.0.0 removes any ambiguity: the changelog's first line is "Only support Symfony >= 3.4." This is not a Laravel/PHP package with a Symfony flavor; it is a Symfony-only artifact by design intent. Its distribution model (bundle class, DI extension, service-oriented configuration) remains structurally incompatible with Laravel's service provider / facade / config-repository idioms. Adopting it in a Laravel codebase still means either standing up a Symfony kernel component inside Laravel (untenable) or hand-porting the internal logic — at which point you are no longer adopting the package. Even in a Symfony context the fit remains weak, and the release makes it weaker rather than stronger: raising the floor to Symfony 3.4 targets a line that reached end-of-life in November 2019. A major version published to modernize DI while still pinning to an EOL framework generation is a signal that this package is not tracking the framework it depends on.

Integration feasibility — still effectively zero for Laravel, low for Symfony. The prior signals hold, with two amendments:

  • Archived repository. No security patches, no compatibility updates, no issue triage. A v2.0.0 tag does not reverse archival; confirm whether the tag landed before or after the archive flag, but either way there is no ongoing maintenance commitment.
  • Release history revised. The previous assessment cited a last release of 2018-03-29. That is now superseded: v2.0.0 is a major, breaking release. It is not a feature addition — it narrows the supported platform (drops Symfony < 3.4) and rewrites service wiring. The package is therefore not fully dormant, but a decade-late floor bump is not evidence of a maintenance cadence; it is evidence of a one-off modernization.
  • 0 stars, 0 dependents. Zero production signal, zero downstream projects to reveal edge cases, no realistic prospect of upstream fixes. The release does not change this.
  • Opportunity score 12.47. Unchanged. A breaking major on an unadopted package does not raise leverage.

Technical risk — high on every axis, with a new upgrade-surface risk introduced by v2.0.0. A settings subsystem sits on the read path of nearly every request and often the write path of admin operations; acquiring that component from an unmaintained source means inheriting unowned code where correctness and cache coherence matter most. The release adds specific new risk:

  • Breaking DI change. "Use autowire for services" is a Symfony 3.3+ container feature. This rewrites the bundle's service definitions: services that were previously explicitly defined (and therefore overridable by consumers) may now be autowired, renamed, made private, or aliased. Any downstream project that decorated, overrode, or referenced a service ID is broken by this release. For a settings bundle — where teams commonly swap the storage or cache implementation — that is exactly the seam being disturbed.
  • No functional fixes. The changelog describes no change to persistence, typing, caching, serialization, transactions, or multi-tenant scoping. Every substantive risk area flagged in the prior assessment is untouched by v2.0.0.

Specific risk areas to probe remain: how values are typed and serialized (scalar-only vs. structured), whether there is a cache layer and how invalidation is handled across processes, whether multi-tenant scoping exists, and whether writes are transactional. None are documented, and undocumented behavior in a settings layer is a silent-corruption vector.

Key questions for the review gate:

  1. Is there any Laravel requirement at all? v2.0.0 answers this: no. If Laravel, this evaluation can terminate immediately with a written no.
  2. If Symfony: does the Symfony >= 3.4 floor satisfy your actual runtime? If you are on Symfony 5/6/7, the release does not help you — the constraint is still far behind, and the fork burden is unchanged.
  3. If the bundle is already embedded: are you on v1 or v2? The autowiring change is a breaking migration with no documented migration guide, so a live system faces a forced-choice fork point.
  4. What is the cost of forking and owning the code versus reimplementing a settings service in ~1–2 weeks?
  5. Does the package provide anything non-obvious (hierarchical resolution, per-tenant overrides, typed schema) that justifies extraction rather than replacement?
  6. What are the actual runtime dependencies and their current vulnerability status — particularly given the Symfony 3.4-era floor and its EOL transitive dependencies?

Integration Approach

Stack fit — do not integrate as-is. For a Laravel stack the recommendation is unchanged: reject and substitute. The maintained, idiomatic peer remains spatie/laravel-settings (typed settings classes, migrations, cached, Laravel-native). For Symfony, use the framework's own parameter/config layers plus Doctrine, or a maintained bundle. v2.0.0 does not create a Laravel path and does not make the Symfony path more attractive. This package should be treated as reference material — design ideas to read, not a dependency to install.

Migration path, if the package is already in use. Treat as a strangler-fig extraction, and note that v2.0.0 adds a decision to the front of it:

  1. Decide your fork base. Pin to v1 (explicit service definitions, wider Symfony range) or v2 (Symfony >= 3.4, autowired). Choose the version whose service surface you can most cheaply reproduce in your replacement; do not attempt an in-place upgrade to v2 as a prerequisite for extraction, since that pays the breaking-change cost for no strategic return.
  2. Inventory every call site: read paths, write paths, and — critically — any place that assumes a specific serialization format or references a bundle service ID directly.
  3. Freeze a data contract. Snapshot the underlying storage (likely a Doctrine-mapped table; verify) and export current values to a format-neutral fixture set. This is your rollback artifact.
  4. Dual-write behind an interface. Introduce SettingsRepository in the application's own namespace, backed first by the legacy store and the new store simultaneously; read from legacy, assert equality.
  5. Cut reads over once parity holds across a full business cycle, including admin/back-office write flows.
  6. Retire the dependency and drop the table only after a defined soak period.

Compatibility. Unchanged guidance: do not attempt to install against current Laravel or Symfony majors without a dependency-resolution spike first. Expect constraint conflicts; the realistic outcome is a fork with widened constraints and no upstream to rebase onto. v2.0.0's explicit Symfony >= 3.4 floor is a useful data point for that spike — if your runtime is above 3.4, the release tells you the package has not been validated there.

Sequencing. Order by risk retirement, not feature completeness: (1) confirm the Laravel-vs-Symfony question and terminate early if Laravel — the release now settles this; (2) if Symfony, run a one-day dependency-resolution and boot spike against both v1 and v2 to see which (if either) resolves; this single gate kills or confirms the option cheaply; (3) only then evaluate extraction of specific logic versus clean reimplementation; (4) schedule the substitute component as its own deliverable with tests, not as a rider on a feature release.

Operational Impact

Maintenance — perpetual, uncompensated ownership. Archival converts a dependency into a fork. Assume you own security patching, framework-major upgrades, PHP-version compatibility, and all bug fixes. v2.0.0 does not offset this; it demonstrates the opposite — a single modernization commit against an EOL framework line, with breaking DI changes and no functional work. A settings layer is touched on nearly every request, so it will be among the first things to break on any runtime upgrade.

Support — none. No maintainer response, no issue-tracker triage, no CVE feed. A fresh major version tag on an archived repository creates a specific support hazard: it looks maintained to a casual reviewer while offering no escalation path. Document the v2.0.0 provenance in your rationale so the tag does not get cited later as evidence of health. Institutional knowledge risk is acute: whoever performs the investigation becomes a single point of failure unless findings are written down.

Scaling — unproven and likely naive. With 0 dependents there is no evidence of production load. Probe specifically for cache strategy (per-request memoization vs. shared cache vs. none), N+1 patterns when resolving multiple settings, and invalidation semantics across multiple app servers. A settings system that reads from the database per key will not survive a high-throughput read path, and a cache without cross-process invalidation produces stale-value bugs that are extremely expensive to diagnose in production.

Failure modes to plan for:

  • Silent stale reads — cache invalidation across nodes; symptom is configuration appearing to "revert" intermittently.
  • Serialization drift — untyped values round-tripping through storage and changing shape; symptom is type errors far from the settings code.
  • Write races — concurrent admin writes without transactions or locking.
  • Upgrade cliff — a PHP or framework bump breaks the unpinned, unmaintained dependency with no patch available. v2.0.0 partially addresses this for Symfony 3.4 and does nothing above it.
  • Broken container wiring after the v2 major — autowired services renamed or made private; symptom is container compilation failure or a silently substituted implementation at boot, which in a settings layer can mean writing to the wrong store.
  • Bus-factor 1 — the investigating engineer leaves and the fork's behavior becomes archaeology.

Ramp-up — moderate investigation, low reuse. Reading and understanding the package is roughly 0.5–1 day for a senior engineer, plus a short delta to understand the autowiring change and its effect on any service overrides. Building a replacement with tests is on the order of 1–2 weeks depending on tenant scoping and cache requirements. Ramp-up yields no reusable upstream contribution, which is why the opportunity score is low.

Recommendation. Do not adopt. v2.0.0 does not change the verdict; it strengthens it. Close the evaluation with a written rationale — archived, zero adoption, Symfony-only by explicit declaration, raised floor to an EOL framework line, breaking DI change with no functional improvement — and redirect the effort to a maintained alternative or a small in-house settings service. Reserve fork-and-extract only for the case where the package is already embedded in a live Symfony system and a specific piece of its resolution logic is genuinely non-trivial; even then, cap the investigation at a one-day spike with an explicit kill criterion.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
abbasudo/artisan-route
mirvan/ippanel
ignibyte/aic-framework
glavweb/data-schema-bundle
glavweb/datagrid-bundle
tacticmedia/scim-server
uni-method/frame
neika-ai/sdk
adachsoft/php-code-style
pharaonic/laravel-notification-dependencies
beautinow/translug
dev-brainiac/bot-cloaked
octoberrain/html
octoberrain/extension
octoberrain/exception
octoberrain/contracts
adachsoft/api-version-bundle
cgv/localized-resource
noith/settings
kda/laravel-package