Property hooks

PHP 🟡 Mid

Définition

Blocs get et set attachés directement à une propriété, introduits en PHP 8.4 (21 novembre 2024, RFC adoptée 42 voix contre 2). Ils remplacent les paires getter/setter et permettent des propriétés virtuelles, calculées sans stockage. Une propriété readonly ne peut pas avoir de hooks.

Analogie

Un compteur électrique qui affiche la consommation calculée quand on le regarde, sans stocker le chiffre nulle part.

Exemple de code

class Locale
{
  public string $countryCode {
    // validation à l'écriture
    set (string $v) { $this->countryCode = strtoupper($v); }
  }

  // propriété virtuelle : aucun stockage
  public string $combined {
    get => "{$this->lang}_{$this->countryCode}";
  }

  public function __construct(public string $lang) {}
}

Cas d'usage

Valider ou normaliser une valeur à l'affectation, ou exposer une valeur dérivée comme une simple propriété, lisible par l'IDE et PHPStan.

Anti-pattern

Mettre de la logique lourde (requête SQL, appel réseau) dans un hook get : chaque lecture la déclenche.
#core#php84#interview

Fiche mise à jour le 2026-09-27

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