Une propriété readonly ne peut être initialisée qu'une fois, en général dans le constructeur, puis n'est plus modifiable. Elle rend l'objet immuable, ce qui limite les effets de bord. Elle exige un type déclaré, et une classe entière peut être readonly depuis PHP 8.2.
Exemple
public function __construct(
public readonly string $id,
) {}