PHP utilise un système de type nominal avec une relation de sous-typage comportementale forte. La relation de sous-typage est vérifiée à la compilation, tandis que la vérification des types est vérifiée dynamiquement au moment de l'exécution.
Le système de type de PHP supporte plusieurs types atomiques qui peuvent être composés ensemble pour créer des types plus complexes. Certains de ces types peuvent être écrits sous forme de déclaration de type.
Certains types atomiques sont des types qui sont étroitement intégrés au langage et ne peuvent être reproduits avec des types définis par l'utilisateur.
La liste des types de base est la suivante :
Il est possible de combiner plusieurs types atomiques en des types composites. PHP permet de combiner les types de la manière suivante :
Un type d'intersection accepte des valeurs qui satisfont plusieurs
déclarations de type de classe, plutôt qu'une seule.
Les types individuels qui forment le type d'intersection sont reliés par le symbole
&
. Par conséquent, un type d'intersection composé
des types T
, U
et
V
s'écrit T&U&V
.
Un type union accepte des valeurs de plusieurs types différents,
plutôt qu'un seul.
Les types individuels qui forment le type d'union sont reliés par le symbole
|
. Par conséquent, un type d'union composé
des types T
, U
et
V
s'écrit T|U|V
.
Si l'un des types est un type d'intersection, il doit être mis entre
parenthèses pour être écrit en DNF.
T|(X&Y)
.
PHP supporte deux alias de type : mixed et
iterable qui correspond au type
type d'union
de object|resource|array|string|float|int|bool|null
et Traversable|array
respectivement.
Note: PHP ne supporte pas les alias de type définis par l'utilisateur.