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

2021
04
Dez

PHP 8.1 Out Now!

PHP 8.1

Der neuste major release PHP 8.1 ist erschienen und wir konnten die finale Version bereits am 26. November 2021 für alle Kunden freigeben. Mit der offiziellen Ankündigung liessen wir etwas auf uns warten, sofern du unseren Tweet verpasst hast. Aber wenn es um's Technische geht, dann geben wir Vollgas!

Sämtliche Erweiterungen, welche unter PHP 8.0 verfügbar waren, stehen euch auch bereit unter PHP 8.1.

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.1

Die neueste PHP-Version bietet nicht ganz so viel Neues wie der grosse Sprung auf PHP 8 letztes Jahr, aber doch einige Funktionalität, die das Webentwickler-Leben vereinfacht. Dies sind die wichtigsten Neuerungen und Änderungen:

  • Enumerations – Du kannst nun Enums statt Konstanten für mehr Typensicherheit und direkter Validierung nutzen. Aus unserer Sicht klar das nützlichste neue Feature!
    enum Status {
    case Pending;
    case Active;
    case Archived;
    }
  • Readonly-Properties – Readonly-Properties können nach einer Initialisierung nicht mehr verändert werden. Sie sind ein ideales Werkzeug um Value-Objekte und Data-Transfer-Objekte zu erstellen. public readonly string $title
  • First-Class Callable Syntax – Durch die sogenannte First-Class Callable Syntax kannst du eine Referenz zu jeder beliebigen Funktion erhalten.
    function foo(int $a, int $b) { /* … */ }
    $foo = foo(...);
    $foo(a: 1, b: 2);
  • new in Initialisierungen – Objekte können nun als Default-Wert für Parameter, statische Variablen, Konstanten, so wie als Argument für Attribute genutzt werden. Dies ermöglicht nun auch die Nutzung von verschachtelten Attributen.
    public function __construct(
        private Logger $logger = new NullLogger(),
    ) {}
  • Pure-Intersection-Types – Nutze die Intersection-Types, wenn du sicherstellen möchtest, dass das übergebene Objekt mehrere Typen implementieren.
    function generateSlug(HasTitle&HasId $post) {
    return strtolower($post->getTitle()) . $post->getId();
    }
  • Der Rückgabetyp never – Eine Funktion mit dem Rückgabetyp never gibt an, dass sie keinen Rückgabewert besitzt und die Funktion entweder eine Exception wirft oder das Script durch die(), exit(), trigger_error(), oder einer ähnlichen Funktion terminiert wird.
  • final Klassen Konstanten – Es ist nun möglich Klassen Konstanten als final zu definieren, sodass diese in einer Vererbung nicht überschrieben werden können.
  • Fibers – Fibers sind eine grundlegende Funktionalität zur Implementierung von verzahnten Abläufen. Sie sind dazu gedacht Code-Blöcke zu erstellen, die pausiert und wiederaufgenommen werden ähnlich wie die Generator-Implementierung, jedoch von überall aus.
  • Entpacken von Arrays mit string-basierten Keys – PHP unterstützte bereits das Entpacken von Arrays mit int-basiertem Key in andere Arrays. Jetzt ist es auch möglich Arrays mit einem string-basiertem Key oder auch einer Kombination aus beiden Varianten zu entpacken.
    $array1 = ["a" => 1];
    $array2 = ["b" => 2];
    $array = ["a" => 0, ...$array1, ...$array2];
    var_dump($array); // ["a" => 1, "b" => 2]

Unter PHP 8 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:

Breaking Changes

PHP 8.1 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.0 als veraltet markiert, weshalb du mit dem Wechsel auf PHP 8.1 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.1?

Aus unserer Sicht spricht nichts gegen den Wechsel auf PHP 8.1. Bisher sind uns keine negativen Effekte aufgefallen und sämtliche grossen CMS und Web-Frameworks sollten problemlos laufen unter PHP 8.1. Einzig die Projekte, welche den grossen Schritt auf PHP 8.0 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.

4. Dezember 2021 um 00:14