Sistema de tipo

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

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 é:

Tipos compostos

É possível combinar vários tipos atômicos em tipos compostos. O PHP permite que os tipos sejam combinados das seguintes maneiras:

  • Interseção de tipos de classes (interfaces e nomes de classes).
  • União de tipos.

Tipos de interseção

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.

Tipos de união

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).

Alias de tipo

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.

Note: O PHP não suporta aliases de tipo definidos pelo usuário.