Documentación offline PHP master

Sistema de tipos

master Ver versión oficial en línea Licencia CC-BY-3.0Descargado el 2026-08-02

En esta página

Sistema de tipos#

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.

Tipos atómicos#

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:

  • Tipos integrados

  • Tipos escalares:

    • tipo bool

    • tipo int

    • tipo float

    • tipo string

  • tipo array

  • tipo object

  • tipo resource

  • tipo never

  • tipo void

  • Tipos de clases relativas: self, parent, y static

  • Tipos singleton

    • false

    • true

  • Tipos unitarios

    • null
  • Tipos definidos por el usuario (generalmente llamados clases-tipos)

  • Interfaces

  • Clases

  • Enumeraciones

  • tipo callable

Tipos escalares#

Un valor se considera escalar si es de tipo int, float, string o bool.

Tipos definidos por el usuario#

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.

Tipos compuestos#

Es posible combinar varios tipos atómicos en tipos compuestos. PHP permite combinar los tipos de la siguiente manera:

  • Intersección de clases-tipos (interfaces y nombres de clases).

  • Unión de tipos.

Intersección de tipos#

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.

Tipos de unión#

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

Alias de tipo#

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.

[!NOTE] PHP no soporta alias de tipo definidos por el usuario.