zendframework/zend-config-aggregator-parameters
A Zend Config Aggregator post-processor that resolves %parameter% placeholders in configuration, letting you centralize reusable values and keep aggregated config DRY across environments and modules.
Architecture fit: This is not a Laravel package. It carries no service provider, facade, config driver, or Artisan integration. It is a plugin for zend-config-aggregator that adds %parameter%-style placeholder resolution backed by symfony/dependency-injection's ParameterBag. For a Laravel codebase the idiomatic fit is effectively zero — Laravel's config layer already resolves values via env()/config() at bootstrap and bakes them with config:cache.
Integration feasibility: Low to moderate. It can be called from a service provider as a standalone library, but doing so imports a foreign abstraction (the config aggregator) plus a heavyweight DI container solely to perform string interpolation. That is a poor dependency-to-value ratio.
Technical risk:
zendframework/* packages are EOL; the maintained continuation is laminas/laminas-config-aggregator-parameters. Adopting the zend package means adopting an unmaintained dependency with no CVE response process.symfony/dependency-injection to ^5.0. Symfony 5 is end-of-life (5.4 is security-only), and no Symfony 6/7 support is declared. On a modern PHP 8.2/8.3 stack this is a hard blocker.Key questions:
zendframework/* already in our composer.lock transitively, or is this a new introduction?^5.0 change resolution?Stack fit: None with Laravel's native config. The only plausible use case is a polyglot monorepo sharing config files between a Symfony service and a Laravel app. Absent that, this package adds conceptual overhead for no functional gain.
Migration path:
composer.lock for zendframework/* and symfony/dependency-injection; establish whether this arrived transitively.laminas/laminas-config-aggregator-parameters — largely a namespace rename and near drop-in.Compatibility: PHP support is not stated in the release notes and the widened constraint only addresses Symfony DI 5.x. Laravel 10/11 require PHP 8.1+. Verify actual PHP 8.x behavior before any commitment; the package predates those runtimes.
Sequencing: Audit → decide replace-or-remove → pin explicitly. Critically, do not let a routine composer update absorb 1.2.0 silently. The widened constraint can move symfony/dependency-injection from 4.x to 5.x in a lockfile refresh, and that ripple can surface in unrelated packages that share the dependency.
Maintenance: Effectively frozen. A single external PR is the entire delta between releases; there is no roadmap, no cadence, and no active maintainer. Budget for it as a vendored/forked dependency, not a maintained one.
Support: No vendor, no LTS window, no security disclosure channel. If retained, it needs a named internal owner and a standing review date.
Scaling: Negligible. Resolution happens once at bootstrap/compile time with no runtime or request-path cost. The only scaling-adjacent nuance is the config:cache interaction — resolved values are baked into the cache, so any parameter change requires a cache rebuild and a redeploy rather than a config-only change.
Failure modes:
Ramp-up: Minimal in skill terms: small API, one concept (a parameter bag). The real onboarding cost is explanatory — every new engineer will ask why a Laravel application contains a Zend config aggregator. Either document the exception rigorously or remove the need for the question.
Verdict on 1.2.0: Low-risk in isolation, and it does not change the strategic picture. Do not adopt for a Laravel codebase. If it is already present, treat this release as a prompt to remove it or migrate to the Laminas successor rather than as a reason to upgrade.
How can I help you explore Laravel packages today?