Refactor Legacy PHP to Modern PHP 8 Features
PHP 8.x introduced a wave of expressive features, but migrating legacy code to use them takes pattern recognition across hundreds of files. Claude can handle that systematically.
cat app/Models/Order.php | claude "Refactor this PHP 7 code to use PHP 8.2 features: constructor property promotion, enums for status values, match expressions instead of switch, and named arguments where they improve clarity."
Claude will make targeted, meaningful changes — not just syntactic ones. A status constant becomes a proper enum:
// Before
const STATUS_PENDING = 'pending';
const STATUS_PAID = 'paid';
// After
enum OrderStatus: string {
case Pending = 'pending';
case Paid = 'paid';
}
And constructor boilerplate collapses to a single line:
// Before
public string $name;
public function __construct(string $name) {
$this->name = $name;
}
// After
public function __construct(public readonly string $name) {}
Run it file-by-file and commit each one — modernise-legacy-code-one-file-at-a-time applies here too.
Modern PHP reads better — Claude gets you there without the tedium.
Log in to leave a comment.
Set up Claude Code as an automated reviewer in your CI pipeline — on every pull request, it reads the diff, checks for bugs, security issues, missing tests, and convention violations, then posts its findings as a PR comment. Your human reviewers get a head start because the obvious issues are already flagged before they look.
Before deploying, tell Claude to read your project — migrations, environment variables, queue workers, scheduled tasks, caching, third-party integrations — and generate a deployment checklist that's specific to your app. Not a generic "did you run migrations?" list, but one that knows YOUR infrastructure and catches the things YOUR deploy can break.
Instead of writing a README from memory or copying a template, tell Claude to read your project and generate one that's actually accurate — real setup instructions from your config, real architecture from your directory structure, real API examples from your routes, and real prerequisites from your dependency files.