PHP 8.2 - Classe readonly

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.