PHP verwendet ein nominales Typsystem mit einer starken verhaltenbasierten Subtypisierungsbeziehung. Die Subtypisierungsbeziehung wird zur Kompilierzeit überprüft, während die Überprüfung der Typen dynamisch zur Laufzeit erfolgt.
Das PHP-Typsystem unterstützt verschiedene atomare Typen, die zusammengesetzt werden können, um komplexere Typen zu erzeugen. Einige dieser Typen können als Typendeklaration geschrieben werden.
Manche atomare Typen sind eingebaute Typen, die fest in die Sprache integriert sind und nicht durch benutzerdefinierte Typen reproduziert werden können.
Liste der Basistypen:
Mit Schnittstellen,
Klassen und
Aufzählungen können
benutzerdefinierte Typen erstellt werden.
Diese werden als benutzerdefinierte Typen oder Klassentypen bezeichnet.
So kann beispielsweise eine Klasse namens Elefant
definiert werden, aus der Objekte vom Typ Elefant
instanziiert werden. Eine Funktion kann dann einen Parameter vom Typ
Elefant
anfordern.
Es ist möglich, mehrere atomare Typen zu zusammengefassten Typen zu kombinieren. In PHP können Typen auf folgende Weise kombiniert werden:
Ein Schnittmengentyp akzeptiert Werte, die mehrere Klassentyp-Deklarationen
erfüllen, anstatt nur einer. Die einzelnen Typen, die den Schnittmengentyp
bilden, werden durch das Symbol &
verbunden. Daher
wird ein Schnittmengentyp, der aus den Typen T
,
U
und V
besteht, als
T&U&V
geschrieben.
Ein Union-Typ akzeptiert die Werte mehrerer verschiedener Typen und nicht
nur eines einzigen. Die einzelnen Typen, die den Union-Typ bilden, werden
durch das Symbol |
verbunden. Daher wird ein Union-Typ,
der aus den Typen T
, U
und
V
besteht, als T|U|V
geschrieben.
Wenn einer der Typen ein Schnittmengentyp ist, muss er in Klammern gesetzt
werden, damit er in DNF geschrieben werden kann:
T|(X&Y)
.