В PHP используется система номинальных типов с сильным поведенческим отношением подтипизации. Отношение подтипизации проверяется во время компиляции, в то время как верификация типов проверяется динамически во время выполнения.
Система типов PHP поддерживает различные атомарные типы, которые могут быть объединены вместе для создания более сложных типов. Некоторые из этих типов могут быть записаны как объявление типов.
Некоторые атомарные типы являются встроенными типами, которые тесно интегрированы с языком и не могут быть воспроизведены с помощью типов, определённых пользователем.
Список базовых типов:
Возможно объединение нескольких атомарных типов в составные типы. PHP позволяет объединять типы следующими способами:
Пересечение типов принимает значения, удовлетворяющие не одному,
а нескольким объявлениям типов классов.
Отдельные типы, образующие пересечение типов, соединяются символом &
.
Поэтому пересечение типов, состоящее из типов T
, U
и V
,
будет записано как T&U&V
.
Объединение типов принимает значения нескольких различных типов, а не одного.
Отдельные типы, образующие объединение типов, соединяются символом |
.
Поэтому объединение типов, состоящее из типов T
, U
и V
,
будет записано как T|U|V
.
Если один из типов является пересечением типов,
то для записи в DNF его нужно заключить в скобки: T|(X&Y)
.
PHP поддерживает два псевдонима типов: mixed и
iterable, которые соответствуют
объединению типов
object|resource|array|string|float|int|bool|null
и Traversable|array
соответственно.
Замечание: PHP не поддерживает определяемые пользователем псевдонимы типов.