News
Insights

Insight

PHP 7.4 ist verfügbar!
PHP 7.4 ist das jüngste Minor-Release, das vom PHP-Projekt neu zur Verfügung gestellt wurde. Dies wird gleichzeitig auch das letzte Release sein - vor PHP 8, welches voraussichtlich gegen Jahresende erwartet werden darf. Das aktuelle Update überzeugt unter anderem durch eine deutliche Leistungssteigerung sowie einer verbesserten Lesbarkeit und Wartbarkeit des Codes.

Einige der Neuerungen, die in PHP 7.4 eingeführt wurden, sind unter anderem der Spread Operator, die Ausdehnung auf Array-Definitionen des seit PHP 5.6 eingeführten Entpackens von Argumenten, die Unterstützung für Typed Properties, Syntaxänderung für Arrow Functions, der Null Coalescing Assignment Operator und, wohl besonders interessant, das Preloading von Klassen, Interfaces und Traits.

Image: php-version.jpg

Preloading für eine beschleunigte Code-Ausführung

Mithilfe des OPCache, welche im Standard Webhosting von Hostfactory zur Verfügung steht, wird ein vorgängig spezifiziertes PHP-Skript auf die Festplatte des Nutzers geladen und vorgehalten. Das Preolading, das das bisherige Autoloading ersetzen soll, erlaubt somit, dass Klassen, Interfaces und Traits bereits zu Beginn der Programmausführung verfügbar sind, anstatt dass diese erst geladen und dann gehalten werden müssen. Dieses Vorgehen verspricht eine deutlich bessere Performance in der Ausführung des Codes. Hierbei wurde auf das Class Data Sharing der Java Hotspot VM geschielt und etwas abgeguckt. Der Unterschied zum bisherigen Caching ist der, dass der Server die Dependencies erkennt und sich um das Linken der benötigten Abhängigkeiten kümmert. Bisher wurde jeweils der Source-Code kompiliert, aber alle Teile wurden separat verwaltet.

FFI-Erweiterung

Weiterhin erlaubt die neue FFI-Erweiterung (Foreign Function Interface), Bibliotheken (Shared Libraries) zu laden und somit C-Funktionen aufzurufen oder auf C-Datenstrukturen zuzugreifen. Ohne weitere Zwischenschritte wird der C-Code in ein FFI-Objekt geschrieben und kann dort weiterverwendet werden.

Der Spread-Operator

Seit PHP 5.6 ist das Entpacken von Argumenten verfügbar. Mit dem neuen Release wird dies nun auch auf Array-Definitionen ausgedehnt. Der Spread-Operator erlaubt zwei Arrays ineinander zu verschachteln. Dies ist zwar auch mit array_merge möglich, jedoch erweitert der Spread-Operator den Einsatz auch auf beliebige Objekte welche Traversable implementieren. Dies macht die array_merge Methode praktisch obsolet. Weiterhin soll der Spread-Operator auch eine bessere Performance haben als array_merge.

Typed Properties

Die Typed Properties 2.0 sind eine Ergänzung zum bisherigen Typsystem, das seit PHP 5 stetig erweitert wurde. Hiermit können Entwickler nun auch die Eigenschaften einer Klasse eingeben. Dies erspart das Schreiben von Getter- und Setter-Methoden zur Typüberprüfung, auch Boilerplate-Code genannt.

Arrow Functions

Die Pfeilfunktionen bieten nun eine vereinfachte Schreibweise für anonyme Funktionen (Closures). Anonyme Funktionen gelten in PHP als schwer zu implementieren und zu warten. Die Werte von im Parent Scope definierten Variablen können nun mit den Arrow Functions ohne den Einsatz von 'use' übernommen werden und erlauben es, den Code somit deutlich zu bereinigen.

Der Null Coalescing Assignment Operator

Der Null Coalescing Assignment Operator (??=) ist ein weiteres praktisches Novum, um den Code schlanker zu halten und funktional zu erweitern. Er kombiniert den bestehenden Null Coalescing Operator (??) mit der Zuweisung einer Variablen. Das heisst, der Operator prüft auf das Vorhandensein eines Anforderungsparameters und setzt einen Standardwert, falls dieser nicht existiert.

Memcached Unterstützung

Für all unsere Linux Webhosting Accounts ist Memcached für PHP 7.4 verfügbar.

Weiteres

Nebst obigen Neuerungen wurden weitere zahlreiche Ergänzungen implementiert, wie zum Beispiel die Erweiterung der Reflection-API für Referenzen mittels 'ReflectionReference' und einem flexibleren Weg zur Objekserialisierung. Diese wird über die magischen Methoden '__serialize' und '__unserialize' bewerkstelligt.

Verwerfungen

Auch in diesem Versions-Update sind wie immer einige Verwerfungen zu erwarten. Die zwei wichtigsten Verwerfungen sind die Änderung der Priorität des Verknüpfungsoperators sowie die Verwerfung des links-assoziativen ternären Operators. Eine umfassendere Liste der Verwerfungen für dieses Versions-Update kann unter dieser Liste eingesehen werden.

Fazit

Die Neuerungen im 'Minor' Release von PHP 7.4 sind im Allgemeinen deutlich wichtiger und interessanter als die Versionsnummer anfänglich suggeriert. Die Sprache wird immer ausgereifter und erlaubt das Schreiben von sauberem, performantem und auch besser lesbarem Code, was die Programmierung enorm erleichtern dürfte.

Ich wünsche Ihnen weiterhin viel Vergnügen und viel Erfolg mit der Arbeit unter PHP. Halten Sie Ihre Anwendungen diesbezüglich aktuell, so dass wir uns gemeinsam auf den Release von PHP 8 per Jahreswechsel freuen dürfen!

Bitte bleiben Sie gesund,
Ihr Angelo Morgante

hostfactory.ch
Neuigkeit