Skip to content

field notes · rescue

Legacy refactor to Laravel

Legacy refactor to LaravelAn isometric drawing of a legacy PHP app moving to Laravel feature by feature. On the left a heavy old PHP app block tangled in cables, with four feature tiles on top: login, orders, reports and admin. On the right a new Laravel app block. A small bridge joins their tops, with one shared database beneath it piped into both. In front, a router switchboard has one lever per feature, leaning toward the app that serves it, with cables to both apps. At the front left a clunky admin screen; at the front right a Laravel Nova admin desk. Move next feature lifts one tile across the bridge, flips its lever to the new app and closes a test cage around it while the old app keeps running. Run tests passes a scan over the moved features and marks each one passed. When all four have moved, the old app powers down and is drawn in dashed outline, as is the old admin screen. Start over puts every feature back.requestslaravelold phpnovarouteroldnewloginordersreportsadminadminordersadminloginreports1234567

Your ageing Yii, CodeIgniter, CakePHP, Zend or home-grown PHP app, rebuilt in Laravel.

In short

A legacy refactor to Laravel moves an ageing PHP application (Yii, CodeIgniter, CakePHP, Zend, Symfony or home-grown) onto current Laravel without losing the business rules inside it. It suits companies whose old app has become hard to change, host or hire for. Zenoware, an Auckland studio, audits the code, migrates it feature by feature with tests and sets up deploys and monitoring. It starts with a free first call about your app and what's hurting.

What you get

  • Business rules carried across, with tests around them

  • Clunky admin screens swapped for Laravel Nova

  • Deploys and queue monitoring that don't need babysitting

How it runs

  1. 01

    Audit

    We map the dependencies, the business rules hiding in old code and the schema.

  2. 02

    Foundation

    Laravel, auth and migration scripts go in first, then the core logic, with tests.

  3. 03

    Feature migration

    Features come over one at a time, with the old app still running beside them.

  4. 04

    Handover

    Forge or Vapor deploys, Horizon and Pulse for monitoring, then docs and time with your team.

Who you'll work with

JP Caparas

JP Caparas

Founder and lead engineer

Thirteen years of principal engineering, including development lead at Public Trust. OpenAI Codex and Devin ambassador in New Zealand. You talk to the person who writes the code.

About the team

Questions

What is legacy code refactoring?

Changing old code so it's easier to work on, without changing what it does for users. For an old PHP app that often means moving it onto a current framework like Laravel, piece by piece, and adding the tests it never had so later changes don't break things.

How do I migrate a CodeIgniter app to Laravel?

There's no automatic converter we'd trust. What works is standing Laravel up next to the old app, moving the data layer into Eloquent models, then porting routes and controllers one feature at a time, with tests. Traffic moves to the new code as each piece is ready.

Should I rewrite or refactor my legacy PHP application?

A full rewrite freezes feature work for a long time, and it tends to lose the rules nobody wrote down. Migrating in phases keeps the old app running while parts move over, so the business carries on and each step can be checked before the next.

Can a legacy app be moved to Laravel without downtime?

Usually, yes. Old and new code run side by side, feature flags decide who sees which, and traffic shifts over gradually. The database is the riskiest part, so its migration scripts get their own rollback safeguards.

Why move an old PHP framework to Laravel?

Regular releases and modern PHP 8 features, for a start. Then there's the first-party tooling (Nova, Forge, Vapor, Horizon, Cashier, Scout) that you'd otherwise build yourself. It's also much easier to hire Laravel developers than people who still want to work in Yii or CakePHP.

Tell us what isn't working.

The first call is free, and we'll tell you straight whether we're the right people for it.

Start a project