Язык PHP использует систему номинальных типов с сильным отношением поведенческого подтипирования. 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 не поддерживает определяемые пользователем псевдонимы типов.