Readonly Properties

PHP 🟡 Mid

Définition

Propriétés PHP 8.1 initialisables une seule fois, puis immuables. PHP 8.2 étend cela aux classes entières (readonly class). PHP 8.3 autorise leur réinitialisation dans __clone(), PHP 8.4 fait de readonly l'équivalent de protected(set), et PHP 8.5 permet clone($obj, ['prop' => $v]) pour dériver un objet immuable.

Analogie

Comme un tatouage : une fois fait, on ne peut plus le modifier.

Exemple de code

readonly class UserDTO {
  public function __construct(
    public string $name,
    public string $email,
  ) {}

  // PHP 8.5 : « clone with » sur un objet readonly
  public function withEmail(string $email): self {
    return clone($this, ['email' => $email]);
  }
}

Cas d'usage

Pour les DTOs et Value Objects ou l'immutabilite garantit l'intégrité des données.

Anti-pattern

Rendre readonly des propriétés qui doivent légitimement changer après l'initialisation.
#core#interview#php8#php85

Fiche mise à jour le 2026-09-27

← → au clavier pour passer d'une fiche à l'autre