~/talk

Legacy to Laravel in 30 minutes

Talkat Laracon AU 2025 · 2025-11-13..11-14· [php, laravel]
links:none on file
slides:none on file

A decade‑old multi‑tenant PHP platform gets migrated piece‑by‑piece into Laravel without downtime: six repositories consolidate into a new Laravel app with a legacy folder, a catch‑all route, a legacy exit exception and header helpers to intercept die/redirects. Migration uses Laravel Shift, adds migrations and tests as a safety net, and converts routes until every route runs in Laravel. A table demo shows 100,000 rows in under a second, and developer velocity and stability improve.

AI-written summary · about

  1. 0:00Start
  2. 1:10Jordan’s PHP background, discovering Laravel through flight sim projects and joining Okfolio
  3. 3:00The asbestos and hazardous materials problem space and what the Okfolio platform does today
  4. 6:30From modern product back to reality - migrating a decade old multi tenant beast
  5. 7:00Six repositories, client and common code bases, safety pages, admin app, inspector app and API
  6. 8:30Inside the legacy PHP: God classes, homemade routing, and JavaScript built as PHP strings
  7. 10:00No ORM, no DI and static configuration - why “just add tests before you refactor” is not so simple
  8. 11:40The Lumen 6 API with everything in one controller method
  9. 13:20Mobile app changes, Friday side quest and using Laravel Shift to convert Lumen to Laravel
  10. 15:35Choosing gradual conversion and the strangler pattern over a risky big bang rewrite
  11. 16:20Building the Laravel wrapper: new app, legacy folder, updated client code and a catch all route
  12. 17:15The legacy controller, output buffering and letting the old app think nothing has changed
  13. 17:50Replacing die calls with a legacy exit exception so Laravel can catch and return responses
  14. 18:25Handling raw header redirects via a helper and exception to keep control inside Laravel
  15. 19:00Iterating daily, drawing from Andrew Morgan’s article and standardising the legacy code
  16. 20:30Establishing tests as the safety net so the team can refactor and deploy with confidence
  17. 22:00New rhythm: features built in Laravel, fixes migrated when touching legacy, and the one way door
  18. 23:00Every route now in Laravel, developer happiness and velocity up
  19. 24:25Framing the migration for leadership around bugs, firefighting, support and the next decade
  20. 26:15The slow legacy tables, timeouts and over fetching that hurt the customer experience
  21. 26:45Laravel table demo: 100,000 rows in under a second, jazzed up UI and immediate buy in
  22. 27:45Reflecting on “cheating” with Laravel’s tooling, models and pagination to deliver big wins
  23. 28:30Final advice for teams sitting on legacy code and closing encouragement that the path is possible
~/search
type to search 6,249 conferences, 138,987 speakers and 185,172 talks
~/help
cmdctrl k
search every conference, speaker and series
/
focus the filter search
h
home
c
conferences
s
speakers
e
series
t
light / dark — the status bar button does the same
?
this help
esc
close this, then clear every filter — or just the search, while you are typing in it

Ignored while you are typing. Pages without a filter rail have no search to focus.