$ recombobulate _
home / tips / refactor-legacy-php-to-modern-php-8-features
0

Refactor Legacy PHP to Modern PHP 8 Features

bagwaa @bagwaa · Mar 26, 2026 · Workflows
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.

~/recombobulate $ tip --comments --count=0

Log in to leave a comment.

~/recombobulate $ tip --related --limit=3
0
Scan Pending Changes for Security Issues with /security-review

The /security-review command scans your uncommitted changes for injection vectors, auth gaps, hardcoded secrets, and other common vulnerabilities.

bagwaa @bagwaa · 1 hour ago
0
Run Setup Scripts on Every Session with the SessionStart Hook

The SessionStart hook fires when any session begins or resumes, making it ideal for loading environment variables and running one-time setup scripts.

bagwaa @bagwaa · 1 hour ago
0
Write Property-Based Tests with fast-check and Claude

Ask Claude to write property-based tests for your functions using fast-check — it identifies the mathematical invariants in your code and generates tests that cover inputs you'd never enumerate by hand.

bagwaa @bagwaa · 2 hours ago