Skip to content
View TomasVotruba's full-sized avatar
🎯
Deprecating Legacy
🎯
Deprecating Legacy

Sponsors

Highlights

  • Pro

Organizations

@symplify @deprecated-packages @rectorphp @ecsphp

Block or report TomasVotruba

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
tomasvotruba/README.md

Hi, I'm Tomas — I Upgrade Legacy PHP Projects

Since 2014, I take PHP projects stuck on old versions and frameworks, and bring them to the current stable one. Not a workshop, not a report you file away — the actual upgrade, delivered and merged.


"If you really want to do something, you'll find a way.

If you don't, you'll find an excuse."


✅ I'm Open to Upgrade Your Project

Full upgrade service, end to end:

  • PHP 5.3 → 8.5 — version by version, your test suite green at every step
  • Framework jumps — Symfony 2 → 7, Laravel 5 → 12, CakePHP, Yii, Nette, Zend 1 → Laminas
  • Custom frameworks — the homegrown one only your team knows, moved to something maintained
  • Legacy → framework — from no-framework spaghetti to a structure you can hire for
  • PHPUnit, Doctrine, and the rest of your composer.json — the dependencies that block everything else
  • Static analysis from zero — PHPStan running in CI, at a level your team can hold

You keep shipping features while the upgrade runs. Your team learns the tooling, so the next upgrade is yours to do.

👉 Let's talk about your project


🛠️ Tools I Build to Make It Possible

Instant upgrades of hundreds of thousands of lines are only possible with automation. So I build it:

  • 🚀 Rector — the instant upgrade and refactoring tool for PHP
  • 🐹 Recongo (private, in the works) — Rector-like automated refactoring, written in Go
  • 📏 lines — measure project size and used PHP features, zero dependencies
  • 🔍 type-coverage — PHPStan extension to require minimal type coverage
  • 🧹 unused-public and class-leak — find the dead code before you migrate it
  • 🩺 phpstan-bodyscan — error count per PHPStan level, so you know where you stand

📚 I Share What I Learn


Legacy code isn't a problem — it's the code that made your business money. Let's make it fun to work with again.

Pinned Loading

  1. rectorphp/rector rectorphp/rector Public

    Instant Upgrades and Automated Refactoring of any PHP 5.3+ code

    PHP 10.4k 741

  2. ecsphp/ecs ecsphp/ecs Public

    ECS runs PHP-CS-Fixer and PHP_CodeSniffer as a single, parallel fast tool with zero dependencies. Run on PHP 7.2+

    PHP 1.6k 92

  3. type-coverage type-coverage Public

    PHPStan extension to require minimal type-coverage

    PHP 217 15

  4. unused-public unused-public Public

    Find Unused Public Elements in Your Code

    PHP 196 15

  5. rectorphp/jack rectorphp/jack Public

    Safe and steady way to raise your composer dependency versions

    PHP 104 1