Content · Web Development · PHP

Migrating from PHP 8.1 to PHP 8.2

Migrating PHP 8.1 to 8.2 requires attention to deprecated dynamic properties and readonly classes. Stop assigning undeclared object fields unless you intentionally use supported dynamic.

1 views Published Oct 17, 2026 Updated Oct 17, 2026 admin

Migrating PHP 8.1 to 8.2 requires attention to deprecated dynamic properties and readonly classes.

What It Does


Migrating PHP 8.1 to 8.2 requires attention to deprecated dynamic properties and readonly classes. The following examples distinguish a normal use case, a boundary case and a practical application.

Requirements and Compatibility


A staging runtime matching the target PHP release and a regression test suite.

PHP 8.1 introduced enums, fibers and readonly properties. Features shown in newer snippets may require a later PHP version.

The code focuses on the core concept. Production implementation may also need routes, validation, persistence, authorization or deployment tooling.

Example 1: Basic Behavior


Readonly classes became available in PHP 8.2.

<?php
readonly class Point { public function __construct(public int $x, public int $y) {} }
echo (new Point(2, 3))->x;

Example 2: Another Case


Declare instance properties rather than creating dynamic fields.

<?php
final class Ticket { public string $status = "new"; }
$ticket = new Ticket(); $ticket->status = "done"; echo $ticket->status;

Practical Example: Putting It to Use


DNF types support unions of intersections as of PHP 8.2.

<?php
interface A { public function a(): void; }
interface B { public function b(): void; }
function accept((A&B)|null $item): bool { return $item === null; }
var_dump(accept(null));

Important Behavior and Edge Cases


Stop assigning undeclared object fields unless you intentionally use supported dynamic mechanisms.

Comparison with Related Functions or Approaches


OptionWhat it means in practice
Migrating from 8.1 to PHP 8.2Migrating PHP 8.1 to 8.2 requires attention to deprecated dynamic properties and readonly classes.
Related approachDeclare properties and run the full suite with E_ALL enabled.

Common Beginner Mistakes


MistakeCorrect approach
Ignoring the important boundary for Migrating from 8.1 to PHP 8.2Stop assigning undeclared object fields unless you intentionally use supported dynamic mechanisms.
Assuming a related mechanism has the same behaviorDeclare properties and run the full suite with E_ALL enabled.

Key Takeaways


  • Migrating PHP 8.1 to 8.2 requires attention to deprecated dynamic properties and readonly classes.
  • Stop assigning undeclared object fields unless you intentionally use supported dynamic mechanisms.
  • Declare properties and run the full suite with E_ALL enabled.

Before adapting these examples, verify the return values, test the failure paths and confirm that your application meets its security and environment requirements.

Share this resourceSend this page to someone who may find it useful.