Visibilité asymétrique
PHP 🟡 MidDéfinition
Syntaxe PHP 8.4 qui sépare la visibilité en lecture et en écriture d'une propriété : public private(set) se lit partout mais ne s'écrit que dans la classe. La visibilité d'écriture doit être au moins aussi restrictive que celle de lecture, et la propriété doit être typée. readonly équivaut désormais à protected(set).
Analogie
Une vitrine de magasin : tout le monde voit les articles, seul le personnel peut les déplacer.
Exemple de code
class PhpVersion
{
public private(set) string $version = '8.4';
public function increment(): void
{
[$major, $minor] = explode('.', $this->version);
$this->version = $major . '.' . ($minor + 1);
}
}
$v = new PhpVersion();
echo $v->version; // OK
$v->version = '9'; // Error : écriture privée
Cas d'usage
Exposer l'état d'un objet en lecture sans getter, tout en gardant le contrôle des mutations dans la classe.
Anti-pattern
Déclarer protected public(set), interdit : l'écriture ne peut pas être plus ouverte que la lecture.
Termes liés
Fiche mise à jour le 2026-09-27