Was ist neu in PHP 7.4?
PHP 7.4 wurde am 28.11.2019 veröffentlicht und mehr und mehr Webhoster bieten es nun als PHP-Version an. In diesem Artikel betrachte ich die Neuerungen.
Sollte man auf PHP 7.4 wechseln?
Auf PHP.net findet ihre die offizielle Information, wie lange die unterschiedlichen PHP-Versionen noch unterstützt werden. PHP 7.2 wird bereits nicht mehr aktiv entwickelt und Security-Updates gibt es nur noch bis Ende November 2020. Ein Upgrade auf PHP 7.3 oder 7.4 lohnt sich deshalb.
PHP 7.4. - Benchmark
PHP 7.4 ist im vergleich zu den vorherigen Versionen erneut etwas schneller geworden:
Der Unterschied zu PHP 7.3. ist allerdings nicht so groß, dass ein Upgrade zwingen notwendig ist. Aus Performance-Gründen muss man also nicht unbedingt auf PHP 7.4 aktualisieren.
PHP 7.4 - Neue Funktionen
PHP 7.4 bietet eine Reihe neue Funktionen, die das Programmieren vereinfachen sollen. Hier meine persönlichen Favoriten.
Arrow Functions
Ähnlich wie in JavaScript können in PHP nun arrow functions definiert werden. Angenommen ihr möchtet jedes Array-Element mit 100 addieren, so vereinfacht sich der Code dank Arrow-Function wie folgt:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
<?php //Alte Variante function add_100($n){ return $n+100; } $a = [1, 2, 3, 4, 5]; $b = array_map('add_10', $a); var_dump($b); // PHP 7.4 Arrow Function $a = [1, 2, 3, 4, 5]; $b = array_map(fn($n) => $n+100, $a); var_dump($b); |
Spread-Operator
Erneut ähnlich wie in JavaScript könnt ihr nun '...' nutzen um aus Argumenten ein Array zu machen.
1 2 3 4 5 |
<?php $start = ['eins', 'zwei']; $weiter = ['null', ...$start , 'drei']; var_dump($weiter ); //Ausgabe: null, eins, zwei, drei |
Typisierte Klassen-Eigenschaften.
In PHP 7.4 können Klassen-Eigenschaften (Klassen-Variablen) nun mit einem Typ versehen werden:
1 2 3 4 |
class User { public int $id; public string $name; } |
Null Coalescing Assignment Operator
In PHP 7 wurde der ?? Operator eingeführt, der einen Alternativwert zuweist, falls der Ausdruck davor nicht definiert ist.
Zum Beispiel:
1 2 |
<?php $someArray['key'] = $someArray['key'] ?? 'Value'; |
Ist hier $someArray['key'] nicht definiert, so wird diesem Eintrag den Wert 'Value' zugewiesen
In PHP 7.4 kann der Ausdruck nun wie folgt verkürzt werden:
1 2 |
<?php $someArray['key'] ??= 'Value'; |
PHP Preloading
In PHP 7.4 wurde sogenanntes Pre-Loading eingeführt. Damit lassen sich Klassenbibliotheken und Frameworks in den Cache von OPcache vorladen und stehen der Anwendung somit deutlich schneller zur Verfügung. Habt ihr beispielsweise eine Anwendung auf Laravel-basis, könntet ihr das Laravel-Framework vorladen lassen. Bei den Aufrufen eurer Scripts müsste dieses nicht jedes mal geladen werden, sondern stände dauerhaft im OPcache zur Verfügung.
Ein Nachteil hat dieses Preloading aber auch: Änderungen am Framework stehen erst nach einem Neustart von PHP bereit.
Weitere Details findet ihr im RFC und auf dieser Seite.
Quellen
- https://www.php.net/supported-versions.php
- https://kinsta.com/de/blog/php-benchmarks-2/
- https://wiki.php.net/rfc/arrow_functions_v2
- https://wiki.php.net/rfc/spread_operator_for_array
- https://wiki.php.net/rfc/typed_properties_v2
- https://wiki.php.net/rfc/null_coalesce_equal_operator
- https://stitcher.io/blog/preloading-in-php-74
- https://neuecasinos24.com/casino-mit-schneller-auszahlung