← Back to Articles
March 17, 2026

Constructor Property Promotion and match in PHP 8

PHP 8 Features

PHP 8 introduced several powerful features that improve code readability, maintainability, and performance. Two of the most notable features are Constructor Property Promotion and the match expression. These additions simplify common coding patterns and reduce boilerplate code. Let's explore how they work and why they are beneficial.

🔹 Constructor Property Promotion

Before PHP 8, defining properties in a class required repetitive code. Developers had to manually declare properties, assign them in the constructor, and often create getter/setter methods.

✅ Traditional Constructor in PHP 7
class User {
    private string $name;
    private int $age;

    public function __construct(string $name, int $age) {
        $this->name = $name;
        $this->age = $age;
    }
}
✅ Constructor Property Promotion in PHP 8

With PHP 8, you can define and assign class properties directly in the constructor parameters using the public, protected, or private keywords.

class User {
    public function __construct(
        private string $name,
        private int $age
    ) {}
}

Advantages:

🔹 The match Expression

The match expression is an improved version of switch. It is more concise, strict in comparison, and can return values directly.

✅ Traditional switch in PHP 7
$status = 200;

switch ($status) {
    case 200:
    case 201:
        $message = "Success";
        break;
    case 404:
        $message = "Not Found";
        break;
    default:
        $message = "Error";
}
✅ Using match in PHP 8
$status = 200;

$message = match ($status) {
    200, 201 => "Success",
    404 => "Not Found",
    default => "Error",
};

Advantages of match:

🎯 Conclusion

Constructor Property Promotion and match are just two of the many enhancements in PHP 8 that make coding more efficient and readable. If you're upgrading to PHP 8, incorporating these features into your projects will help streamline development and improve code maintainability.