PHP 8 veröffentlicht
by Viktor Garske on Nov. 29, 2020, 6:25 p.m.PHP sollte den meisten ein Begriff sein. Ursprünglich angedacht als Werkzeug zur Verarbeitung von Formulardaten, ist die Programmiersprache heute weit verbreitet und schwer aus dem Internet wegzudenken. Applikationen wie WordPress, MediaWiki, phpMyAdmin, phpBB, aber auch Internetportale wie Facebook basieren zu einem Großteil auf dieser Skriptsprache.
Nun wurde Version 8 veröffentlicht. Das PHP-Team präsentiert die wichtigsten Änderungen auf einer eigens dazu eingerichteten Webseite. Werfen wir einen kleinen Blick auf die Änderungen.
Die Änderungen im Kurzüberblick
Eines der Aushängeschilder ist der neue Just-in-time-Compiler (JIT), der Performanceverbesserungen ermöglichen soll. Diese Verbesserungen können allerdings anwendungsabhängig sein.
Viele der neu eingeführten Features sind schon von anderen Programmiersprachen bekannt. So werden sog. named arguments eingeführt, die stark an die keyword arguments aus Python erinnern. Damit wurde eine Alternative zu den klassischen positionsabhängigen Argumenten geschaffen, sodass ab sofort Funktionsaufrufe so gestaltet werden können, dass die Bedeutung der einzelnen Argumente sofort deutlich wird.
Die Arbeit mit Klassen wurde in zweierlei Hinsicht verbessert: zum einen verbindet die neue constructor property promotion Ideen aus C++ und Python, bei der die Klassenattribute ausschließlich als Parameter im Konstruktor deklariert und mit Standardwerten versehen werden können. Somit entfällt die Deklaration in der Klasse und die Wertzuweisung im Rumpf des Konstruktors.
Zum anderen verbessert PHP 8 die Typsicherheit in Klassen. Mit den union types können mehrere erlaubte Typen für eine Variable festgelegt werden.
Zwei weitere Verbesserungen sind die aus Rust sowie vielen funktionalen Programmiersprachen bekannten match expressions, die eine Alternative zur switch-Anweisung darstellt. Weiterhin wird der nullsafe operator $foo?->bar?->baz
eingeführt, der if (... !== null)
-Kaskaden ersetzen soll.
Während die bisher aufgezählten Änderungen Ergänzungen oder Vereinfachungen für die Sprache darstellen, enthält dieser Release auch breaking changes, mit denen vor allem die API geradegerückt wird: so wird ein String-Zahl-Vergleich nun nicht mehr pauschal mit true
beantwortet, sondern nur noch, wenn der String als Zahl umgewandelt im Vergleich wahr ist. Das würde z.B. auf 0 == "0"
, aber auch 0 == "0.0"
zutreffen. Dieses Verhalten erinnert an JavaScript mit den beiden Operatoren ==
(Vergleich mit erlaubter Umwandlung) sowie ===
(Vergleich ohne erlaubte Umwandlung).
Darüber hinaus wurden Typfehler konsistenter gestaltet sowie eine Vielzahl an kleineren Änderungen eingearbeitet.
Einschätzung
PHP begleitet mich nun seit mittlerweile 10 Jahren. Dabei hat die Sprache in diesen Jahren einen bemerkenswerten Wandel hingelegt. Angetreten als simples Server Side Scripting reift die Sprache in den letzten Jahren aus und wird für größere Projekte attraktiver, wobei aus meiner Sicht besonders das verbesserte Typensystem dazu beitragen kann.
Von starker und statischer Typisierung ist diese Sprache noch ein gutes Stück entfernt, was Vor- und Nachteile haben kann. Eine Möglichkeit anzubieten, auf Wunsch statischere Typisierung zu nutzen, ist allerdings begrüßenswert – dass String-Zahl-Vergleiche trotzdem noch schwächer typisiert bleiben, aber schade.
Entscheidend bei der Verbreitung wird allerdings auch der Fakt sein, dass bestehender Code aufwändiger auf PHP 8 migriert werden muss als es noch bei vorherigen Versionen der Fall war. An dieser Stelle sei auch an Python erinnert, wo die Migration von Version 2 auf 3 noch nach 10 Jahren und einem knapp seit einem Jahr nicht mehr unterstütztem Versionsstrang noch immer andauert.
PHP sichert mit Version 8 seine Existenz für die nächsten Jahre und versucht von Erfahrungen anderer Programmiersprachen zu lernen, wie die Implementierung der match expressions zeigt. Bis von diesen Verbesserungen die Entwickler allerdings profitieren, kann es noch dauern, da zwar vor einigen Tagen mit der Veröffentlichung der Startschuss gegeben wurde, die Verfügbarkeit in Distributionen und bei Webhostern allerdings noch auf sich warten lassen kann.
Viktor Garske
Viktor Garske ist der Hauptautor des Blogs und schreibt gerne über Technologie, Panorama sowie Tipps & Tricks.