Umstieg auf PHP 8
So stellen Sie eine Website von PHP 7.4 auf PHP 8 um – Vorbereitung und Vorgehen, Änderungen, die alten Code brechen, und Neuerungen von PHP 8.0 bis 8.5: benannte Argumente, der Operator ?->, match, Typen, Constructor Promotion, readonly, Aufzählungen und Attribute. Die Beispiele sind in PHP 7.4 und 8.2 bis 8.5 geprüft.
PHP 7.4 erhält nicht einmal mehr Sicherheitskorrekturen. Wie Sie sich auf den Umstieg auf PHP 8 vorbereiten, in welcher Reihenfolge Sie vorgehen und wie Sie Code schreiben, der in der alten wie in der neuen Version läuft.
Der meiste alte Code läuft in PHP 8 ohne Änderungen. Einige Änderungen verändern aber still das Ergebnis oder beenden das Skript, statt eine Warnung auszugeben. Welche das sind und wie Sie den Code korrigieren.
PHP 8.0 brachte benannte Argumente, dank derer Sie Standardwerte nicht ausschreiben müssen, und den Operator ?->, der Prüfungen auf null verkürzt. Dazu Details wie throw in einem Ausdruck oder catch ohne Variable.
Der Ausdruck match aus PHP 8.0 liefert einen Wert, vergleicht streng und vergisst nie ein break. Wann Sie ihn statt switch verwenden, wie Sie Bereiche mit match(true) schreiben und was passiert, wenn kein Zweig passt.
PHP 8 hat die Typen von Parametern, Rückgabewerten und Eigenschaften stark erweitert: Union-Typen, mixed, never, Intersections und Typen von Konstanten. Ein Überblick nach Versionen mit Beispielen und mit dem, was declare(strict_types=1) erzwingt.
Klassen lassen sich in PHP 8 kürzer und sicherer schreiben: Eigenschaften können direkt im Konstruktor deklariert werden, readonly verhindert ihre Änderung und PHP 8.4 hat asymmetrische Sichtbarkeit und Property Hooks hinzugefügt.
Die Aufzählung (enum) aus PHP 8.1 ersetzt Konstanten für Status, Rollen oder Typen. Wie Sie ein reines und ein Backed Enum schreiben, einen Wert aus der Datenbank umwandeln, Methoden hinzufügen und ein Enum in match verwenden.
Attribute aus PHP 8.0 ersetzen Annotationen in Kommentaren und eingebaute Attribute decken Fehler schon beim Ausführen des Codes auf. Dazu ein Überblick über weitere Neuerungen der Versionen 8.1 bis 8.5 – von der kurzen Callable-Syntax bis zum Operator |>.