codifico/parameter-bag-extension
A lightweight Laravel/PHP extension for the Codifico parameter bag, adding convenient helpers to store, retrieve, merge, and organize application parameters. Keep configuration values tidy and accessible through a simple, fluent API.
Architecture fit. Despite the framing as a Laravel/PHP package, this is a Behat extension — it plugs into Behat's extension/parameter-bag configuration layer rather than into a Laravel application. Architecturally that is a favorable property: it sits entirely in test tooling, has no runtime coupling to application code, no service provider, no migrations, and cannot affect production traffic. The corollary is that it does not solve any application-layer problem; its entire value surface is configuration hygiene inside a Behat suite. For a team standardized on PHPUnit/Pest — the Laravel default — there is no architecture slot for this package at all.
Integration feasibility. Mechanically trivial if the prerequisite is met: a dev-only Composer requirement plus an entry under extensions in behat.yml. The real gating question is whether the organization runs Behat in the first place, which is a minority position in the Laravel ecosystem. If Behat is already present, integration is an afternoon; if not, this package is not a reason to adopt Behat.
Technical risk. Adoption signals are the dominant risk: 7 stars and 0 dependents indicate an effectively undiscovered package with a bus factor of one. MIT licensing and a small code surface keep legal and supply-chain exposure low, but there is no evidence of CI, semantic versioning, or a compatibility matrix against Behat 3.x or PHP 8.x. Behat extensions hook into internal service definitions and the parameter bag, which are semi-private contracts; a Behat major upgrade can break the extension in ways that surface as confusing config errors rather than clean failures. Expect to own the code, not consume it.
Key questions.
%parameter%-style resolution?Stack fit. Treat this as an optional plugin inside an existing Behat suite, not as a Laravel dependency. Fit is positive only where (a) Behat is already the BDD harness and (b) the team has pain from duplicated or hardcoded configuration across suites and profiles. Where the team uses Pest/PHPUnit, the correct decision is to decline and stop the evaluation here.
Migration path. Pilot-first, single-suite: add as a require-dev, register the extension in one profile, convert a handful of hardcoded values to parameter references, and confirm resolution in one feature file. Blast radius is bounded — rollback is a config line and a Composer removal, with no data or runtime consequences. Do not touch shared suite configuration until the pilot proves resolution behaves as documented.
Compatibility. Pin an exact version and verify against the target PHP/Behat matrix in an isolated CI job before merging into shared config. Test explicitly for conflicts with any other extension registering against the parameter bag, since load order determines who wins and failures are often silent. Add a Behat version constraint to the suite's Composer manifest so a routine upgrade cannot quietly break test configuration.
Sequencing. (1) Confirm Behat and PHP versions in use. (2) Spike on a branch against a throwaway suite. (3) Read the source — it is small enough that direct inspection beats documentation research. (4) Establish naming and precedence conventions for parameters and document them alongside the test README. (5) Standardize only after the spike, and only if it demonstrably removes duplication.
Maintenance. Plan to fork. With a single maintainer and negligible community, the realistic operating model is a vendored or VCS-referenced fork under team ownership. Cost is modest because the surface area is small, but it must be budgeted explicitly rather than assumed away; an untended fork that silently breaks on a Behat upgrade is the more expensive outcome.
Support. No vendor, no SLA, no meaningful community answer pool. Internal capability to read Behat extension internals is the de facto support contract. This is acceptable for test tooling and unacceptable anywhere the failure would block releases without a workaround.
Scaling. Parameter bags scale as configuration, not as load. The failure mode at scale is sprawl: the same logical value defined in several profiles with unclear precedence, and no single source of truth. Mitigate with a naming convention, one canonical parameter source (environment or a base config), and review discipline on behat.yml changes. Secrets must stay out of committed config regardless of how convenient parameter resolution makes them.
Failure modes. Unresolved placeholders are the sharp edge — a literal %base_url% reaching a test can produce a green run against a wrong or nonexistent target. Extension load-order conflicts can silently override values. Behat major upgrades can break the extension at config load. Committed credentials in a parameter bag are a disclosure risk. Each of these fails quietly, so add an assertion or smoke check that placeholders resolve to expected values.
Ramp-up. Low for engineers already fluent in Behat's extension and DI model; moderate for Laravel developers whose mental model is service providers and PHPUnit. Reading the source is a half-day at most and is likely faster and more reliable than any external evaluation. The honest TPM read: this package is worth a spike as a configuration-hygiene pattern, not worth a dependency-management commitment — the leverage is in the convention it encourages, and that convention can be reproduced with native Behat features if the package proves unmaintained.
How can I help you explore Laravel packages today?