Глоссарий

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.