PHP 5.3 → 8.4

PHP Upgrade Service: from PHP 5.3 to PHP 8.4

Every PHP release drops something your code depends on. We upgrade one minor version at a time, each step a green CI and a mergeable pull request, until you run the latest PHP with strict types and full type coverage.

Typical blockers

What stops a PHP upgrade

  • Removed functions and extensions: mysql_*, ereg, each(), create_function(), dynamic properties
  • Implicit type juggling that turns into TypeError in PHP 8: string-to-number comparisons, null to internal functions
  • Untyped code, so static analysis cannot tell you what breaks before production does
  • Old dependencies pinned to a PHP version that no longer receives security fixes
How we do it

Step by step, always mergeable

  1. Intro analysis: we run Rector, PHPStan and our own tooling on your repository to find every PHP-version blocker and estimate the effort per version.
  2. Bump one minor version at a time: PHP 7.2 → 7.3 → 7.4 → 8.0 and so on. Each bump is a set of small pull requests your team reviews and merges the same week.
  3. Add type declarations with Rector type-coverage rules, so PHPStan catches the next regression in CI instead of in production.
  4. Wire Rector and PHPStan into your CI. Your next PHP upgrade takes days instead of months.

What the diff looks like

Every change is a reviewable diff, small enough to merge the same day.

php-upgrade.diff
-class Invoice
-{
- private $items = array();
-
- public function total()
- {
- $sum = 0;
- foreach ($this->items as $item) {
- $sum += $item->price;
- }
- return $sum;
- }
-}
+final class Invoice
+{
+ /** @param Item[] $items */
+ public function __construct(
+ private readonly array $items = [],
+ ) {
+ }
+
+ public function total(): float
+ {
+ return array_sum(array_map(fn (Item $item): float => $item->price, $this->items));
+ }
+}
“In my time as Head of software engineering at i6, I found in Rector the perfect core and enabling team to tackle technical debt, unblock critical upgrades and build strong foundations for leading aviation software project.”
Dom Graziano
Dom Graziano
Head of Software Engineering at i6 Group
Intro analysis
2 weeks, $6,000-8,000

Codebase measured, blockers listed, timeline and price for the whole upgrade in a PDF report.

Hands-on upgrade
$120 / hour

20-80 hours a week, in parallel to your team, every change delivered as a mergeable pull request.

Do it yourself
Open source

Browse PHP Rector rules and read the documentation to run the upgrade with your own team.

Read more about PHP upgrades

Request a PHP upgrade estimate