Après les propriétés readonly
avec PHP 8.1 (info ici), nous aurons bientôt (fin 2022) les classes readonly
avec PHP 8.2.
Une classe déclarée readonly
signifie que toutes ses propriétés sont également readonly
.
readonly class Foo {
public string $bar;
public string $baz;
}
Cela aussi implique que toutes les propriétés de la classe doivent être typées (puisque qu’une propriété non typée ne peut pas être readonly
). Il sera également impossible d’utiliser des propriétés dynamiques (pas bien grave on est d’accord ?), qui seront d’ailleurs dépréciées en PHP 8.2.
Quelques informations supplémentaire
Une classe abstraite peut être déclarée readonly
.
abstract readonly class Foo {
}
Une classe finale peut être déclarée readonly
.
final readonly class Foo {
}
Une classe qui hérite d’une classe readonly
doit être readonly
également.
Tout autre type (Enum, Interface et Trait) ne peut pas être déclaré readonly
.
Conclusion
On va toujours dans le bon sens en ayant des outils permettant d’épurer toujours plus notre code et donc de gagner en lisibilité, productivité, etc.