Die Programmiersprache PHP liegt jetzt in der neuesten Version 8.1 vor. Das Update bringt viele Neuerungen wie Enumerationen und Fibers sowie darüber hinaus auch Performance-Verbesserungen.

Der neue Aufzählungstyp Enum

Mit der Version 8.1 werden bei PHP Enumerationen (kurz: Enum) eingeführt. Das ist analog zu anderen Sprachen wie etwa Java oder C++ ein Aufzählungstyp, der vorgegebene Werte gestattet.

Die Enums in PHP zeigen Ähnlichkeiten mit Klassen und teilen sich dieselben Namensräume wie Klassen, Interfaces und Traits. Das macht sie dann auch auf die gleiche Weise automatisch ladbar (autoloadable).

Das veranschaulicht ein Beispiel aus dem Request for Comments (RFC) auf wiki.php.net:

enum Suit {
case Hearts;
case Diamonds;
case Clubs;
case Spades;}

Das Beispiel generiert einen neuen Aufzählungstyp namens Suit, der folgende vier Werte aufnimmt: Suit::Hearts, Suit::Diamonds, Suit::Clubs und Suit::Spades. Diesen Werten lassen sich Variablen zuweisen. Entwickler deklarieren Aufzählungstypen mit dem Schlüsselwort Enum  gefolgt vom Namen des Types. Ein Enum kann sowohl string als auch int als Grundlage nutzen. Außerdem können sie auch Klassen erweitern und/oder Schnittstellen implementieren.

Enums bieten insbesondere den Vorteil, dass sie eine Sammlung von konstanten Werten darstellen, die typisiert werden können-

Jetzt auch mit asynchronen Funktionen

Eigentlich war PHP bisher nur für das Schreiben von synchronem Code gedacht. Dabei wird die Ausführung von Funktionen gestoppt, bis ein Ergebnis vorliegt, das von einer Funktion zurückgegeben wird.

Seit einiger Zeit gab es laut dem zugrundeliegenden RFC Versuche, auch asynchronen Code zu schreiben, um gleichzeitige Eingabe-Ausgabe-Operationen zu möglich zu machen.

Asynchrone Funktionen gestatten einen Callback oder geben einen Platzhalter für einen zukünftigen Wert zurück, um den Code an der Stelle erst in dem Moment fortzusetzen, wenn ein Ergebnis vorliegt. Auf diese Weise wird der Code weiterhin ausgeführt, ohne auf ein Ergebnis zu warten. Beispiele für solche Projekte sind amphp, ReactPHP und Guzzle.

Auch die Performance wurde gesteigert

Das neue Release PHP 8.1 bringt neben Enums und Fibers auch Verbesserungen der Performance. Der Release Manager und PHP-Core-Entwickler Dmitry Stogov hat mehrere Verbesserungen zur Erweiterung opcache hinzugefügt, die er als „inheritance cache“ bezeichnet.

Mithilfe dieser Funktion lassen sich Verknüpfungen zwischen Klassen zwischenspeichern, ähnlich wie in PHP 7.4, wo verknüpfte Klassen vorgeladen werden können. Auf GitHub berichtet er von einer Steigerung der Performance zwischen 5 und 8 Prozent.

Die Liste der Neuerungen von PHP 8.1 ist aber noch länger. Eine Aufzählung aller Änderungen finden Sie in einem Beitrag auf php.net.