Union & Intersection Types
PHP 🟡 MidDéfinition
Union (A|B) accepte l'un OU l'autre type (PHP 8.0). Intersection (A&B) exige que la valeur implémente TOUS les types (PHP 8.1). PHP 8.2 permet de les combiner en forme normale disjonctive : (A&B)|null, l'intersection devant être entre parenthèses.
Analogie
Union : un billet accepte en euros OU en dollars. Intersection : un candidat qui parle français ET anglais.
Exemple de code
// Union (PHP 8.0)
function parse(string|int $input): string { }
// Intersection (PHP 8.1)
function save(Countable&Iterator $items): void { }
// DNF : intersection OU null (PHP 8.2)
function find((Countable&Iterator)|null $items): void { }
Cas d'usage
Pour exprimer des contraintes de type précises et réduire les erreurs a l'exécution.
Anti-pattern
Utiliser des unions trop larges (string|int|float|array|null) qui perdent tout intérêt de typage.
Termes liés
Sources
Fiche mise à jour le 2026-09-27