laminas/laminas-dependency-plugin
Composer plugin that eases migration from Zend Framework to Laminas by transparently replacing zendframework/* dependencies with their laminas/* equivalents during install and update, helping existing projects adopt Laminas without manual composer.json edits.
zendframework/* or zfcampus/*, this plugin is the cheapest known lever to move that dependency graph forward without a rewrite sprint.sed migration. The plugin operates at dependency-resolution time, which means it keeps composer.json/composer.lock consistent — a homegrown script usually does not.Adopt when:
composer.json or composer.lock contains zendframework/* or zfcampus/* packages, directly or transitively.composer.json in a monorepo or multi-service estate.Look elsewhere or deprioritize when:
laminas/* directly; adding a migration shim to a new codebase is pure overhead.Zend\ → Laminas\ namespace changes, changed signatures, and removed classes still require manual refactoring and regression testing. Budget engineering time regardless.For executives: We have services running on Zend Framework, which reached end-of-life and no longer receives security fixes. That is an open compliance and incident-response exposure. The Laminas Dependency Plugin is a free, officially maintained Composer plugin that automatically swaps those packages for their maintained Laminas equivalents at install time. It is not the whole migration — application code still needs namespace and API updates — but it removes the mechanical dependency work, keeps our lockfiles consistent, and lets us size the remaining effort precisely. Cost is effectively zero; the return is a measurable reduction in EOL surface and a credible remediation story for audit.
For engineering: It's a Composer plugin, drop-in, no runtime footprint. It rewrites zendframework/* and zfcampus/* requirements to laminas/* during dependency resolution, so you don't hand-edit manifests across a monorepo. Treat it as scaffolding: adopt it in a branch, use it to enumerate what actually breaks, then remove it once the last Zend package is gone. Expect real work in Zend\ → Laminas\ namespace changes and any API drift — the plugin does not do that for you. Verify each service against its test suite before merging, and do not leave the plugin installed as a permanent dependency.
Positioning summary: Low cost, narrow scope, official provenance, transitional by design. Approve it as a migration accelerant, not as a platform commitment.
How can I help you explore Laravel packages today?