HDBLOG


Kategorien


Neueste Beiträge


Neueste Kommentare


Archive


HDNET GmbH & Co. KG


Ravensbeger Str. 22
33824 Werther (Westf.)
Impressum | Datenschutz

HDBLOG

/ 0

Allgemein

PHP 8 die nächste Major-Version

23rd September 2020

Einleitung

Am 26. November 2020 soll laut Zeitplan die neue PHP-Major-Version veröffentlich werden. Diese wird den Namen PHP 8 tragen. Es wird auch wieder zahlreiche neue Features geben. Zwei dieser Features möchte ich heute vorstellen.

Union Types

Union Types akzeptieren Werte von unterschiedlichen Typen. Ein Union Type kann z. B. mit einem Integer- als auch einen Float-Wert typisiert werden. Bereits in der Version 7.1 gab es die ersten Möglichkeiten eines Union Types. Dort wurden die sogenannten Nullable Types eingeführt. Damit ist es möglich, dass ein Rückgabewert oder eine Typdeklaration eines Parameters sowohl Null, als auch den angegebenen Typen akzeptiert. Parameter und Rückgabewerte mit dem Nullable Type erkennt man an einem vorangestellten „?“.

function bar(?string $foo):? string {
     return $foo;
}

Ebenso wurde der Pseudotyp „iterable“ eingeführt. Ein Iterable kann sowohl ein Array, als auch ein Object mit dem Interface Traversable sein.

function foo(iterable $iterable) {
    foreach ($iterable as $value) {
        // ...
    } 
}

Hier ist noch ein weiteres Beispiel wie in PHP8 der Union Type umgesetzt wurde. Hierfür müsst Ihr den Wert angeben, gefolgt von einer Pipe.

function foobar(): float|int {
    return 1.0;
}

Named Arguments

Ein weiteres Feature in der nächste PHP-Version nennt sich ‚Named Arguments‘. Aber was genau machen diese? Anstatt Argumente anhand Ihrer Position zu übergeben, ist es jetzt möglich diese über Ihren Namen zu übergeben. Dadurch wird der Code leserlich, da wir direkt sehen können, welcher Wert an welchen Parameter übergeben wird. Das ermöglicht uns bei Funktionen mit beispielsweise 10 Default Argumenten, dass wir diese direkt überspringen können und unser eigentlich Argument direkt über den Namen adressieren können. Siehe dazu auch folgendes Beispiel.

// Vorher
gmmktime(gmdate("H"), gmdate("i"), gmdate("s"), gmdate("n"), gmdate("j"), 2021);

// Nacher
gmmktime(year: 2021);

Schlusswort

Wer es nicht abwarten kann und schon sofort die neuen Features testen will, kann die aktuelle Beta 3 auch direkt auf 3v4l.org ausprobieren. Eine Übersicht über alle Features findet ihr in dem folgenden Blogartikel stitcher.io.

Kommentare

Es gibt noch keinen Kommentar.