PHP readonly class with constructor promotion and named arguments
PHP Dasun Kalupahana 84 views
<?php
final readonly class Point
{
public function __construct(public int $x = 0, public int $y = 0) {}
public function withX(int $x): static
{
return new static($x, $this->y);
}
}
$p = new Point(y: 5);
$q = $p->withX(10);
echo "$p->x,$p->y -> $q->x,$q->y", PHP_EOL; // 0,5 -> 10,5
try {
$p->x = 99;
} catch (Error $e) {
echo $e->getMessage(), PHP_EOL; // Cannot modify readonly property Point::$x
}
A readonly class makes every property immutable, and constructor promotion removes the boilerplate. “Withers” return a new instance instead of changing the old one. Needs PHP 8.2+ (on 8.1, put readonly on each property).
Learn more on the blog
How to Detect and Fix PHP Memory Leaks
Last updated: 5 November 2026. See the update log at the end.In...
AI Coding Prompts That Actually Improve Productivity
Most lists of "best AI coding prompts" are collections of clever wording....
Laravel Herd Setup: Sites, PHP Versions, HTTPS and Databases
Laravel Herd is a local development environment for macOS and Windows that...