Глосарій

Union та Intersection типи

Union types (PHP 8.0) дозволяють оголосити, що параметр або повернення може бути одним з кількох типів. Intersection types (PHP 8.1) — що значення має реалізовувати усі вказані інтерфейси одночасно.

Union Types

function parse(string|int $id): User|null {
  return User::find($id);
}

// PHP 8.0 також додав: int|string, float|int, тощо
// Спеціальні: mixed, never, void

Intersection Types

interface Serializable {}
interface Loggable {}

function process(Serializable&Loggable $obj): void {
  // $obj гарантовано реалізує обидва інтерфейси
}

DNF Types (PHP 8.2)

Disjunctive Normal Form — комбінація union і intersection: (Serializable&Loggable)|null.