fervo/environment-bundle
fervo/environment-bundle simplifies environment configuration for PHP applications, helping you define and manage settings for local, staging, and production environments while keeping environment-specific values organized and easy to switch.
env() now throws an InvalidArgumentException when a variable is absent, with an explicit default supplied via a second parameter. That is the right shape of behaviour — but it is behaviour Laravel and Symfony already give us natively, so it confirms the decision rather than changing it.symfony/symfony, and the repository history point to Symfony 2/3-era conventions. 0.2.0 reinforces this: it tracks an upstream Symfony PR rather than any Laravel contract. That mismatch should itself trigger a review of how the dependency was surfaced in your intake pipeline; a package with no Laravel service provider or config/ publishing story cannot deliver Laravel's .env + config:cache workflow.AppKernel.php, and removing it is out of scope for the current sprint. Even then, treat it as frozen and plan extraction — and note that 0.2.0 removes the trait, so any code importing it will fatal on upgrade. Do not take 0.2.0 opportunistically; it is a breaking change with no supported framework behind it..env + config/*.php + php artisan config:cache, plus a secrets store (AWS Secrets Manager, HashiCorp Vault, Doppler) for anything sensitive. In Symfony: built-in environment variables and %env()% processors (Symfony 3.2+), which superseded bundles of this type — 0.2.0 is effectively a hand-rolled, unmaintained echo of that native behaviour. Twelve-factor ENV-only configuration for containerised deployments.Recommendation: do not adopt — unchanged by 0.2.0. This bundle solves a problem — per-environment configuration — that Laravel and Symfony have both solved natively and more securely for years. The new release adds a default-value parameter and a fail-fast exception for missing variables, and removes the trait outright; useful hardening in the abstract, but delivered by a single-star package with no dependents that targets a PHP and framework generation we no longer run. Adopting it would mean owning an unmaintained dependency for zero differentiated capability, with a near-certain rewrite cost the moment we upgrade PHP.
For executives: the risk is asymmetric — no upside, and a small but real tail risk around secrets handling and an unpatchable dependency in our supply chain. The 0.2.0 release does not add a maintenance commitment, a support matrix, or a security channel; it adds a breaking change.
For engineering: the effort is better spent on a short, standardised configuration pattern — .env for local, injected environment variables in CI/CD, a managed secrets store for production, and config:cache in the deploy pipeline. Both behaviours 0.2.0 introduces (defaults, failing loudly on a missing variable) fall out of that pattern for free, backed by framework support.
If it is already in the codebase: scope a removal ticket now, before the next PHP or framework upgrade forces it — and gate any attempt to move to 0.2.0, since the trait removal is a breaking change inside a dead release line.
How can I help you explore Laravel packages today?