Der neuste major release PHP 8.2 ist erschienen und wir konnten die finale Version inkl. sämtlicher Erweiterungen bereits letzten Samstag 10. Dezember 2022 für alle Kunden freigeben – 2 Tage nach dem offiziellen Launch-day. Ein grosser Dank geht hier an Ondřej Surý, welcher unter DEB.SURY.ORG stets die aktuellsten PHP-Packages für Debian zur Verfügung stellt.
Sämtliche Erweiterungen, welche bisher unter PHP 8.1 verfügbar waren, stehen euch auch bereit unter PHP 8.2.
Die neue Version ist in unserem Controlpanel unter «PHP-Manager» zu finden und lässt sich sowohl für die Hauptdomain als auch für sämtliche Subdomains individuell aktivieren.
Neuerungen in PHP 8.2
PHP 8.2 baut auf der erneuerten Basis von PHP 8.0 und PHP 8.1 auf. Die neuste PHP-Version bietet nicht ganz so viel Neues wie der grosse Sprung auf PHP 8, aber doch einige Funktionalität, die das Webentwickler-Leben vereinfacht. Dies sind die wichtigsten Neuerungen und Änderungen:
- Neue
readonly
Klassen – Mit PHP 8.1 wurde die Funktionreadonly
für Klasseneigenschaften eingeführt. Mit PHP 8.2 wird nun die Möglichkeit hinzugefügt, die gesamte Klasse alsreadonly
zu deklarieren. Wenn du eine Klasse alsreadonly
deklarierst, erben alle ihre Eigenschaften automatisch dasreadonly
Merkmal. Wenn du also eine Klassereadonly
deklarierst, ist es dasselbe, als wenn du jede Klasseneigenschaft alsreadonly
deklarierst. true
,false
, undnull
als eigenständige Typen – PHP enthält bereits skalare Typen wieint
,string
undbool
. Diese wurden in PHP 8.0 um Union-Typen erweitert, die es ermöglichen, dass Werte von verschiedenen Typen sein können. Der gleiche RFC erlaubte auch die Verwendung vonfalse
undnull
als Teil eines Union-Typs – als eigenständige Typen waren sie jedoch nicht erlaubt.- Disjunctive Normal Form (DNF) Typen – Die disjunktive Normalform (DNF) ist eine standardisierte Methode, um boolesche Ausdrücke zu organisieren. Sie besteht aus einer Disjunktion von Konjunktionen – in booleschen Begriffen ist das ein ODER von UNDs. Got it? Kurz, dies ist nun möglich:
function bar((A&B)|null $entity) { ... }
Die Anwendung von DNF auf Typendeklarationen ermöglicht eine standardisierte Art und Weise, kombinierte Union- und Intersection-Typen zu schreiben, die der Parser verarbeiten kann. Die neue DNF-Typenfunktion von PHP 8.2 ist einfach, aber mächtig, wenn sie richtig eingesetzt wird. - Sensible Parameter in Backtraces redacten – Wie fast jede Programmiersprache erlaubt auch PHP die Nachverfolgung des Aufrufstapels an jedem Punkt der Codeausführung. Das Stack-Tracing erleichtert das Debuggen von Code, um Fehler und Leistungsengpässe zu beheben. Normalerweise laufen die meisten Stack Traces im Hintergrund und werden stillschweigend protokolliert – für eine spätere Überprüfung, falls nötig.
Einige dieser detaillierten PHP-Stacktraces können jedoch von Nachteil sein, wenn du sie an Drittanbieterdienste weitergibst – in der Regel für die Analyse von Fehlerprotokollen, die Fehlerverfolgung usw. Diese Stack Traces können sensible Informationen wie Benutzernamen, Passwörter und Umgebungsvariablen enthalten.
Mit PHP 8.2 kannst du solche sensiblen Parameter mit dem neuen Attribut
\SensitiveParameter
kennzeichnen. Jeder Parameter, der als sensibel gekennzeichnet ist, wird in deinen Backtraces nicht aufgeführt. - Konstanten in Traits zulassen – PHP bietet eine Möglichkeit zur Wiederverwendung von Code, die Traits. Neu können auch Konstanten in Traits definiert werden, genauso wie Klassen-Konstanten.
- Neue
Random
Erweiterung – Im Laufe der Geschichte von PHP wurden verschiedene Zufallszahlengeneratoren (Random Number Generators, RNG) mit unterschiedlichem Grad an Leistung, Anwendungsfällen und Eignung für sichere Anwendungen unterstützt. PHP 8.2 geht einen Schritt weiter, indem es die gesamte RNG-bezogene Funktionalität in eine neue Erweiterung namensRandom
überführt. - und einiges mehr...
Unter PHP 8.2 Released! findet ihr sämtliche neuen Features mit den entsprechenden Links zur Doku resp. RFCs aufgelistet.
Für weitere Infos beachte bitte auch das offizielle Release Announcement und unser Support-Wiki:
Weitere sehr empfehlenswerte Artikel:
- stitcher.io – What's new in PHP 8.2
- stitcher.io – Readonly classes in PHP 8.2
- stitcher.io – PHP 8.2 in 8 code blocks
- PHP.Watch – PHP 8.2 Highlights: What's New and Changed
Breaking Changes
PHP 8.2 ist eine neue Major-Version. Das bedeutet, dass einige Änderungen enthalten sind, die mit älterem Code nicht mehr kompatibel sind. Viele der Änderungen sind jedoch bereits seit PHP 8.1 als veraltet markiert, weshalb du mit dem Wechsel auf PHP 8.2 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.2?
Aus unserer Sicht spricht absolut nichts gegen den Wechsel auf PHP 8.2. Bisher sind uns keine negativen Effekte aufgefallen und sämtliche grossen CMS und Web-Frameworks sollten problemlos laufen unter PHP 8.2. Einzig die Projekte, welche den grossen Schritt auf PHP 8.1 bis heute verschlafen haben, werden wohl auch nicht ganz so rasch nachziehen und es ist zumindest mit E_DEPRECATED
Warnungen zu rechnen.
Du kannst ganz einfach testen, ob deine Website lauffähig ist unter dieser neuen Version. Im Controlpanel unter «PHP-Manager» kannst du die PHP-Version jederzeit up- resp. downgraden.