O PHP usa um sistema de tipo nominal com uma forte relação de subtipagem comportamental. A relação de subtipagem é verificada em tempo de compilação, enquanto a verificação de tipos é verificada dinamicamente em tempo de execução.
O sistema de tipos do PHP suporta vários tipos atômicos que podem ser compostos juntos para criar tipos mais complexos. Alguns desses tipos podem ser escritos como declarações de tipo
Tipos atômicos são tipos internos que são fortemente integrados com a linguagem e não podem ser reproduzidos com tipos definidos pelo usuário.
A lista de tipos básicos é:
É possível combinar vários tipos atômicos em tipos compostos. O PHP permite que os tipos sejam combinados das seguintes maneiras:
Um tipo de interseção aceita valores que satisfazem várias
declarações de tipo de classe, em vez de uma única.
Os tipos individuais que formam o tipo de interseção são unidos pelo símbolo
&
. Portanto, um tipo de interseção composto pelos tipos
T
, U
, e
V
será escrito como T&U&V
.
Um tipo de união aceita valores de vários tipos diferentes,
em vez de um único.
Tipos individuais que formam o tipo de união são unidos pelo
|
símbolo. Portanto, um tipo de união composto
pelos tipos T
, U
, e
V
será escrito como T|U|V
.
Se um dos tipos for um tipo de interseção, ele precisa ser colocado entre
parênteses para que seja escrito em DNF:
T|(X&Y)
.
O PHP suporta dois aliases de tipo: mixed e
iterable que corresponde ao
tipo de união
de object|resource|array|string|float|int|bool|null
e Traversable|array
, respectivamente.
Nota: O PHP não suporta aliases de tipo definidos pelo usuário.