Typsystem

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.

Atomare Typen

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:

Skalare Typen

Ein Wert gilt als skalar, wenn er vom Typ int, float, string oder bool ist.

Benutzerdefinierte Typen

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.

Zusammengefasste Typen

Es ist möglich, mehrere atomare Typen zu zusammengefassten Typen zu kombinieren. In PHP können Typen auf folgende Weise kombiniert werden:

  • Schnittmenge von Klassentypen (Schnittstellen und Klassennamen).
  • Zusammenfassung von Typen (Union-Typen).

Schnittmengentypen

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.

Zusammengefasste Typen (Union-Typen)

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

Typ-Aliase

PHP unterstützt die beiden Typ-Aliase mixed und iterable, die dem Union-Typ von object|resource|array|string|float|int|bool|null bzw. Traversable|array entsprechen.

Hinweis: PHP unterstützt keine benutzerdefinierten Typ-Aliase.

add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top