Blog & News

Wir halten Sie auf dem Laufenden! Hinter den Kulissen tut sich immer viel. Wenn's was wirklich interessantes zu berichten gibt, dann steht's hier.

Atom Feed

zurück zum Blog

2020
09
Dez

PHP 8 Ready for Showtime!

PHP 8.0

Endlich ist es so weit! Wir konnten gestern Abend PHP 8.0 für alle Kunden freigeben. Die neue Major-Version war für uns eine echte Herausforderung. Der offizielle Release von PHP 8.0.0 erfolgte bereits am 26. November 2020. Wir mussten uns aber noch darauf gedulden, bis alle Entwickler der für uns relevanten Extensions nachgezogen haben. Es geht hier insbesondere um diese Extensions, welche Onlime auch unter PHP 8 weiterhin im Angebot hat: APCu, mailparse, mcrypt, imagick

Mittlerweile sind sämtliche Erweiterungen bereit für PHP 8.0. Einzig bei imagick velief es besonders harzig, da der Maintainer dieser wrapper library für ImageMagick aktuell nicht mehr bereit scheint, das Projekt weiterzupflegen, vgl. Imagick/imagick#358 – Dies der Hauptgrund der Verzögerung. Wir konnten nicht länger warten und mussten also die aktuelle master Branch von Imagick selbst kompilieren. Gemäss unseren Tests funktioniert soweit alles wie erwartet unter PHP 8.0. Mit Ausnahme von Imagick sollten PHP 8.0.0 und sämtliche von uns mitgelieferten Extensions stabil und bereit für den produktiven Einsatz sein.

Die neue Version ist in unserem Controlpanel unter «PHP-Manager» zu finden und lässt sich sowohl für Ihre Hauptdomain als auch für sämtliche Subdomains individuell aktivieren.

Neuerungen in PHP 8.0

Die neueste PHP-Version bietet einige Funktionalität, die das Webentwickler-Leben vereinfacht. Dies sind die wichtigsten Neuerungen und Änderungen:

  • JIT (Just in Time Compiler) — Das am meisten gelobte Feature, das mit PHP 8 kommt! Kurz erklärt: Der JIT-Compiler prüft konstant, welche Programmteile ausgeführt werden. Erkennt der Compiler Stellen, die immer wieder ausgeführt werden und sich dabei nicht verändern, markiert er diese als «heiss» und legt sie als Maschinencode ab. Bei der nächsten Ausführung muss der Code damit nicht mehr interpretiert werden, was einen enormen Geschwindigkeitsgewinn bringt. Doch Achtung: Im Vergleich zu PHP 7.4 sind mit PHP 8.0 und JIT bei Web-Applikationen keine Quantensprünge zu erwarten! Mit JIT wird PHP nun aber auch für Anwendungen attraktiv, für welche die Entwickler/innengemeinde die Sprache bisher links liegen liess: Machine-Learning, Grafik-Rendering oder Datenanalyse.
  • Named Arguments — Benannte Argumente ermöglichen die Übergabe von Argumenten an eine Funktion, die auf dem Parameternamen und nicht auf der Parameterposition basiert. Wow! Ein Feature, das wir in PHP schon immer vermisst haben und immer sehr sexy fanden an Python und anderen Script-/Programmiersprachen.
  • Constructor Property Promotion — Führt den Konstruktor und die Parameterdefinition zusammen. Wir haben also einen neuen Weg, um Eigenschaften zu bewerben, der kürzer, lesbarer und weniger fehleranfällig ist.
  • Attributes — Eine der Neuerungen, die für kontroverse Diskussionen in der PHP-Community gesorgt hat, sind Attributes. In vielen anderen Sprachen als Annotations bekannt, machen es Attributes möglich, Meta-Daten in einer strukturierten Form mitzugeben. Attributes sind eine gute Sache. Kontroversen hat viel mehr die Wahl der Syntax gesorgt.
  • Union Types — Union types akzeptieren Werte, die von unterschiedlicher Art sein können. Bisher waren union types à la int|float nur in Form von phpdoc-Annotationen möglich. Neu werden in PHP 8 Union types direkt in den Funktionssignaturen unterstützt.
  • Nullsafe Operator — PHP 8 führt den nullsicheren Operator $-> mit vollständiger Kurzschlussauswertung ein. Bei der Kurzschlussbewertung wird der zweite Operator nur dann bewertet, wenn der erste Operator nicht auf null bewertet. Wenn ein Operator in einer Kette auf null auswertet, stoppt die Ausführung der gesamten Kette und wertet auf null aus. Sehr elegant! Dies wird uns einige Zeilen an schwer verständlichem Code mit tiefer Verschachtelung ersparen.
  • Match expression — Der neue match-Ausdruck ist dem switch ziemlich ähnlich, aber mit einer sichereren Semantik und der Möglichkeit, Werte zurückzugeben.
  • Saner String to Number-Vergleiche — PHP 8 macht nun Vergleiche von Zeichenketten mit Zahlen vernünftiger. 0 == 'foo' resultiert in false, so wie's schon immer hätte sein sollen!
  • Allow a trailing comma in parameter lists — Abschliessende Kommas sind seit PHP 7.3 bereits für Methoden- und Funktionsaufrufe erlaubt. Mit PHP 8 ist nun auch in Parameterlisten dieses «Trailing Comma» valide. Sehr hübsch!
  • und vieles mehr...

Unter PHP 8 Released! findet ihr sämtliche neuen Features mit den entsprechenden Links zur Doku resp. RFCs aufgelistet.

Für weitere Infos beachten Sie bitte auch das offizielle Release Announcement und unser Support-Wiki:

Breaking Changes

PHP 8 ist eine neue Major-Version. Das bedeutet, dass einige Änderungen enthalten sind, die mit älterem Code nicht mehr kompatibel sind. Viele der Änderungen sind bereits seit einer der Minor-Versionen von PHP 7 als veraltet markiert, weshalb Du mit dem Wechsel auf PHP 8 generell keine Probleme haben solltest, wenn Du mit den Anpassungen in den vergangenen Versionen vertraut bist. Eine Liste mit allen Breaking Changes findest Du wie gehabt auf der Upgrade-Seite der PHP Group.

Bereit für PHP 8.0?

Dies ist die erste stabile Version von PHP 8.0 und bei solchen Versionen ist immer Vorsicht geboten. Bisher sind uns aber keine negativen Effekte aufgefallen und sämtliche grossen CMS und Web-Frameworks sollten problemlos laufen unter PHP 8.0.

Sie können ganz einfach testen, ob Ihre Website lauffähig ist unter dieser neuen Version. Im Controlpanel unter PHP-Manager können Sie die PHP-Version ganz einfach up- resp. downgraden.

9. Dezember 2020 um 13:44