PHP utiliza un sistema de tipos nominal con una fuerte relación de subtipado comportamental. La relación de subtipado se verifica en la compilación, mientras que la verificación de tipos se verifica dinámicamente en el momento de la ejecución.
El sistema de tipos de PHP soporta varios tipos atómicos que pueden ser compuestos juntos para crear tipos más complejos. Algunos de estos tipos pueden ser escritos en forma de declaración de tipo.
Algunos tipos atómicos son tipos que están estrechamente integrados en el lenguaje y no pueden ser reproducidos con tipos definidos por el usuario.
La lista de tipos básicos es la siguiente:
Es posible definir tipos personalizados con
interfaces,
clases y
enumeraciones.
Estos se consideran tipos definidos por el usuario, o tipos de clase.
Por ejemplo, una clase llamada Elephant
puede ser definida,
luego objetos de tipo Elephant
pueden ser instanciados,
y una función puede requerir un argumento de tipo Elephant
.
Es posible combinar varios tipos atómicos en tipos compuestos. PHP permite combinar los tipos de la siguiente manera:
Un tipo de intersección acepta valores que satisfacen varias
declaraciones de tipo de clase, en lugar de una sola.
Los tipos individuales que forman el tipo de intersección están unidos por el símbolo
&
. Por lo tanto, un tipo de intersección compuesto
por los tipos T
, U
y
V
se escribe T&U&V
.
Un tipo de unión acepta valores de varios tipos diferentes,
en lugar de uno solo.
Los tipos individuales que forman el tipo de unión están unidos por el símbolo
|
. Por lo tanto, un tipo de unión compuesto
por los tipos T
, U
y
V
se escribe T|U|V
.
Si uno de los tipos es un tipo de intersección, debe ser puesto entre
paréntesis para ser escrito en DNF.
T|(X&Y)
.
PHP soporta dos alias de tipo: mixed y
iterable que corresponde al tipo
tipo de unión
de object|resource|array|string|float|int|bool|null
y Traversable|array
respectivamente.
Nota: PHP no soporta alias de tipo definidos por el usuario.