Symfony
9 articles
One-Time Upload Links in Symfony, Without a User Account
Job applicants need to upload documents once, and most of them never come back. None of them are worth a user account, and there's no login flow to speak of, just a link that works once and then dies. Symfony has no first-class answer for this. Here is the actual mechanism, and where it breaks if you build it yourself.
Eight Lessons From a Nine-Month Framework Migration
From PHP 5.6 and MySQL to Symfony 8 and PostgreSQL, a production migration without a big-bang rewrite. Eight lessons from 488 commits, 4 bridge components, and one strangler fig that actually worked.
The Day We Deleted 12,000 Lines of Legacy Bridge Code
Eight coordinated commits, two hours, 129 files removed. The Strangler Fig bridge had done its job. Now it was time to delete it. Here is the checklist we followed, the traps we avoided, and how we knew the bridge was ready to come down.
Porting ZF1 to Symfony Without Downtime, Module by Module
Seven ZF1 modules, four migration waves, one rule. Port the most visible feature first. How the Strangler Fig bridge kept legacy routes alive while each module was rebuilt in Symfony, and how we knew when a module was ready to be deleted.
How ZF1 Users Log Into Symfony With Cross-Framework Authentication
During a Strangler Fig migration, both frameworks need to recognize the same user. Here is how a Symfony authenticator read Zend_Auth session data to create seamless single sign-on across ZF1 and Symfony, and why it was the first bridge component to be removed.
Sharing One PostgreSQL Connection Between Two ORMs
During a Strangler Fig migration, both old and new ORMs must access the same data. Here is how one Symfony event subscriber made Zend_Db and Doctrine ORM share a single database connection. No ETL, no sync scripts, no duplication.
Running ZF1 Inside Symfony 8 With the Strangler Fig Pattern
The catch-all route that let two frameworks coexist in the same process. How Symfony booted Zend Framework 1 internally, shared the session, and returned a unified response, without a reverse proxy.
Why We Migrated from Zend Framework 1 to Symfony 8
Zend Framework 1 has been end-of-life since 2016. PHP 5.6 receives no security patches. But the application still worked, so why take the risk? The decision process behind migrating a production HR platform from ZF1 to Symfony 8.
The Doctrine Filter That Only Breaks on Sub-Requests
A tenant-scoping filter that works perfectly under load, in every test, on every page, until one template embeds another controller.