Am gestrigen 26.November wurde PHP 8.0 veröffentlicht! Nach insgesamt 4 Release Candidates wurde die neue Major Version mit vielen neuen Funktionen und Verbesserungen offiziell freigegeben.
Ein schöner Zeitpunkt um sich die Entwicklung der letzten Jahre noch mal anzusehen.

PHP in den letzten Jahren

Vor etwas weniger als fünf Jahren (Dezember 2015) wurde PHP 7.0 veröffentlicht – ein großer Meilenstein! Vor allem nach der Verwirrung wie es nach PHP 5.6 weiter gehen wird. Einige erinnern sich bestimmt an PHP 6.

PHP 7.0 war das erste Release mit dem neuen einheitlichen drei-Jahres-Zyklus. Bis zum „Lebensende“ von PHP 7 wurden PHP 7.1 und 7.2 veröffentlicht, jeweils immer um etwa ein Jahr versetzt. Mit dem Ende von PHP 7.0 wurde parallel PHP 7.3 veröffentlicht, welches noch bis Ende 2021 mit Security Fixes versorgt werden wird.

Ich will hier aber gar nicht weiter mit Daten um mich werfen. Werft besser einen Blick auf diese Visualisierung von PHP selbst (die gepunktete Linie repräsentiert „Heute“):

Grün: Aktiver Support, Orange: Nur Security updates

Und hier wird die „Lebenszeit“ eines PHP Releases sehr schnell klar: es gibt zwei Jahre vollen Support und ein weiteres Jahr Security Updates. Der gleiche Zyklus wird auch für PHP 8.0 verwendet.

Weitere Informationen findet man auch auf Wikipedia.

PHP 8.0 Features und Verbesserungen

Mit PHP 8.0 liefert php.net eine sehr schön gestaltete Landing Page mit einer Auflistung der wichtigsten neuen Funktionen und geändertem Verhalten. Dabei wird auf die folgenden Haupt-Punkte eingegangen (Beispiele sind von der Landing Page übernommen).

Names Arguments

Es ist möglich optionale Parameter zu überspringen und die Reihenfolge zu ändern:

// PHP 7
htmlspecialchars($string, ENT_COMPAT | ENT_HTML401, 'UTF-8', false);

// PHP 8
htmlspecialchars($string, double_encode: false);

Attribute

Anstatt PHPDoc Annotations gibt es nun ein eigenes Format für Code Meta-Daten:

// PHP 7
class PostsController
{
    /**
     * @Route("/api/posts/{id}", methods={"GET"})
     */
    public function get($id) { /* ... */ }
}

// PHP 8
class PostsController
{
    #[Route("/api/posts/{id}", methods: ["GET"])]
    public function get($id) { /* ... */ }
}

Constructor Property Promotion

Klassen Variablen können direkt im Konstruktor definiert und initialisiert werden, sodass man weniger redundanten Code schreiben muss:

// PHP 7
class Point {
  public float $x;
  public float $y;
  public float $z;

  public function __construct(
    float $x = 0.0,
    float $y = 0.0,
    float $z = 0.0,
  ) {
    $this->x = $x;
    $this->y = $y;
    $this->z = $z;
  }
}

// PHP 8
class Point {
  public function __construct(
    public float $x = 0.0,
    public float $y = 0.0,
    public float $z = 0.0,
  ) {}
}

Und viele weitere…

Ich möchte nicht alles vorwegnehmen bzw. einfach blind von php.net rüber kopieren – schaut stattdessen lieber direkt an der Quelle nach 🙂 Unter anderem gibt es noch Union Types, Match Ausdrücke, Nullsafe Operator und „vernünftige“ String-zu-Zahl Vergleiche.

Migration von 7.4.x zu PHP 8.0

Wie üblich gibt es einen guten Migrations-Guide mit Informationen um veraltete Features, entfernte Funktionen und Dinge die nun Fehler verursachen werden. Auch der Changelog sollte aufmerksam gelesen werden. Vor allem, wenn ihr konkret an Software arbeitet die mit PHP 8.0 kompatibel sein muss 😉

Ich bin schon wirklich gespannt auf die neue Version und ich denke das die meisten Leute aufgrund der natürlichen Lebenszeit eines PHP Releases „schon bald“ auch mit PHP 8.0 arbeiten können!

Wann kommt PHP 8.1?

Ich gehe davon aus, das der Release-Zyklus auch weiterhin eingehalten wird. Das bedeutet: in vermutlich einem Jahr (Ende 2021) dürfte die nächste PHP Version erscheinen. Bis dahin ist aber noch viel Zeit 😉

Und damit möchte ich euch ins Wochenende verabschieden und hoffe ihr kommt schnell dazu PHP 8.0 selbst auszuprobieren! Spannende Zeit!

Bis zum nächsten Mal wünsche ich euch eine schöne Feiertage und natürlich Happy Coding!

2 comments on “PHP 8.0 – Neues Major Release

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.