Readonly Properties
PHP 🟡 MidDé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.
Termes liés
Sources
Fiche mise à jour le 2026-09-27