Document ID: /fineweb-2-swissfilter-quality_10-filterrobots/filtered/03384.jsonl.gz/1680

Es ist offiziell - die erste komplette Version von PHP 8 kommt am 26. November 2020. Für die "Early Birds" sind bereits Alpha Versionen zum Testen verfügbar. Sie finden die jeweils neuste Version hier: https://www.php.net/archive/2020.php .
Neue Features
PHP 8 bringt einerseits Erweiterungen für eine verbesserte Performance aber auch diverse Änderungen um den Entwicklern den Alltag zu erleichtern. Die hier aufgeführten Features werden definitiv in der finalen Version von PHP 8 sein.
JIT
"JIT" bedeutet "just in time" oder zu Deutsch "gerade noch rechtzeitig". Da PHP keine kompilierte Sprache (wie z.B. C, Java oder C#) ist, wird der Code während der Laufzeit in Maschinencode übersetzt. "JIT" überwacht den Code während der Laufzeit und merkt sich, welche Codestellen regelmässig aufgerufen werden. Aus diesem Code wird optimierter Maschinencode erstellt, welcher anstelle des "echten" Codes verwendet werden kann.
Union types
Mit PHP 8 können mehrere mögliche Typen in der Argumentendefinition oder Returnwerte angegeben werden.
public function foo(Foo|Bar $input): int|float;
Nullsafe operator
Diese Änderung wird das Leben vieler PHP-Entwickler erleichtern.
$confirmationDate = $reservation->getConfirmation()?->getDate();
In früheren PHP Versionen musste man zuerst prüfen ob es eine Konfirmation zu dieser Reservation gibt, da man eine Exception auslöst, wenn man versucht eine Methode auf "null" auszuführen. Mit PHP 8 lässt sich das komfortabel auf einer Zeile lösen. Wenn "->getConfirmation()" null zurückgibt, wird die Kette unterbrochen und $confirmationDate wird auf null gesetzt.
Named arguments
Bereits in vielen anderen Sprachen existierend kann diese Funktionalität die Lesbarkeit des Codes ein grosses Stück verbessern.
sumUp(firstNumber: 14, secondNumber: 44);
Attributes
Attribute, oder wie sie in vielen anderen Sprachen genannt werden, Annotations, ermöglichen einen neuen Weg, dem Code Metadaten hinzuzufügen. Diese Funktionalität war bisher bereits mit Docblocks möglich, allerdings ermöglichen Attributes eine einheitliche Strukturierung der Metadaten.
Match Expression
Diese neue Expression funktioniert ähnlich wie "switch" mit einigen Unterschieden:
- Sie kann Werte zurückgeben
- Kein "break" nötig
- Striktes Vergleichen der Werte
Ob match besser oder schlechter als switch ist, kann jeder für sich selbst entscheiden. Fest steht, dass grosse switch-Statements mit match ein gutes Stück verkürzt werden können.
Constructor property promotion
Klassen-Properties welche im Konstruktor übergeben und zugewiesen werden, erzeugten bisher einige Zeilen an Boilerplate Code. Neu können diese Properties direkt im Konstruktor definiert werden.
Weitere Neuerungen
PHP 8 bietet eine grosse Anzahl Neuerungen, von denen hier nur ein Teil erläutert wurde. Für eine komplette Übersicht schauen Sie unter diesem Link nach: https://wiki.php.net/rfc#php_80
Fazit: Lohnt sich die Umstellung auf PHP 8?
Wir finden: Auf jeden Fall! Die neuen Änderungen versprechen ein angenehmeres Erlebnis für Benutzer wie auch Programmierer. Damit die Umstellung auf PHP 8 so schmerzfrei wie möglich funktioniert, empfiehlt es sich, PHP zuvor auf die Version 7.4 zu setzen.