PHP 8.2 – Die spannendsten Neuerungen

Philipp Zeder
Autor:

Philipp Zeder

Kategorie:

in

Entwicklung & Performance

Veröffentlicht am 16. Feb. 2023

Aktualisiert am 26. Feb. 2024

PHP 8.2 ist da. Und ab sofort auf deinem cyon-Hosting verfügbar. Wir haben die 4 spannendsten Neuerungen herausgepickt und zeigen dir ausserdem, wegen welchen veralteten Funktionen du deinen Code erneuern musst.

Titelbild «PHP 8.2 – Die spannendsten Neuerungen»

Neue Random-Erweiterung

PHP 8.2 bringt eine komplett neue Funktion, mit der du zufällige Zahlen generieren kannst. Sie ist performanter, sicherer und besser wartbar. Also so ziemlich alles, was du dir von einem modernen Zufallsgenerator wünschst. 😊 Der neuen Klasse \Random\Randomizer kannst du nun verschiedene sogenannte «Pseudo Random Number Generator»-Algorithmen (PRNG-Engines) zuweisen und so zum Beispiel in der Entwicklungs-Umgebung und auf Production unterschiedliche Engines nutzen.

Code-Beispiele, den RFC und die passende Dokumentation findest du auf der Website der PHP Group.

nulltrue und false als eigenständige Typen

false konntest du vor PHP 8.2 schon zusammen mit anderen Typen in sogenannten «Union-Types» verwenden. Ab PHP 8.2 kannst du sowohl false als auch zusätzlich true sowie null als eigenständige Typen nutzen.

Vor PHP 8.2:

class Falsy
{
    public function almostFalse(): bool { /* ... */ *}

    public function almostTrue(): bool { /* ... */ *}

    public function almostNull(): string|null { /* ... */ *}
}

Ab PHP 8.2:

class Falsy
{
    public function alwaysFalse(): false { /* ... */ *}

    public function alwaysTrue(): true { /* ... */ *}

    public function alwaysNull(): null { /* ... */ *}
}

Das Code-Beispiel, die RFCs und die Dokumentation findest du auf der Website der PHP Group.

Readonly-Klassen

Seit PHP 8.1 kannst du Properties als readonly deklarieren und so verhindern, dass die Property nach der Initialisierung verändert wird. PHP 8.2 fügt nun noch etwas mehr syntaktischen Zucker hinzu. Dank Readonly-Klassen machst du alle Klassen-Properties auf einen Schlag readonly.

Vor PHP 8.2:

class BlogData
{
    public readonly string $title;

    public readonly Status $status;

    public function __construct(string $title, Status $status)
    {
        $this->title = $title;
        $this->status = $status;
    }
}

Ab PHP 8.2:

readonly class BlogData
{
    public string $title;

    public Status $status;

    public function __construct(string $title, Status $status)
    {
        $this->title = $title;
        $this->status = $status;
    }
}

Dieses Code-Beispiel, den RFC und die Dokumentation findest du auf der Website der PHP Group.

Verschleiere sensitive Daten in Stack-Traces

Üblicherweise schickst du Fehler in deiner produktiven Umgebung an einen zentralen Service, der die Fehler für dich aufbereitet und dich alarmiert, falls etwas schief läuft. Bisher hattest du das Problem, dass unter Umständen auch auch sensitive Daten wie Umgebungsvariabeln, Passwörter oder Anmeldenamen an den Service geschickt werden. Dank dem Attribut #[\SensitiveParameter] gehört das der Vergangenheit an, denn damit markierte Parameter werden in den entsprechenden Stack-Traces automatisch verschleiert.

Weitere neue Klassen, Interfaces und Funktionen findest du in der Übersicht auf php.net.

Ab PHP 8.2 veraltet

PHP 8.2 bringt einige Deprecations mit. Allen voran stehen Dynamic Properties, die mit der neuesten PHP-Version als veraltet gemeldet werden. Ausser du vergibst der Klasse das Attribut #[\AllowDynamicProperties]. In stdClass-Klassen bleiben Dynamic Properties auch ohne das erwähnte Attribut erlaubt. Und die __get– und __set-Methoden sind ebenfalls nicht davon betroffen.

Vor PHP 8.2:

class User
{
    public $name;
}

$user = new User();
$user->last_name = 'Doe';

$user = new stdClass();
$user->last_name = 'Doe';

Ab PHP 8.2:

class User
{
    public $name;
}

$user = new User();
$user->last_name = 'Doe'; // Deprecation-Notiz

$user = new stdClass();
$user->last_name = 'Doe'; // Weiterhin erlaubt

Eine Übersicht über die weiteren Deprecations findest du direkt auf der Release-Seite der PHP Group. Als praktisches Tool, mit dem du deinen PHP-Code schnell mit der neuesten PHP-Version kompatibel machen kannst, können wir dir Rector empfehlen.

Weitere Lektüre & deine Favoriten?

Wie gesagt, die Website der PHP Group sprich php.net ist eine gute erste Anlaufstelle zu allen Neuerungen von PHP 8.2 und PHP im Allgemeinen. Ebenfalls seit Jahren Garant für spannende PHP-Inhalte sind die Blog-Beiträge von Brent Roose.

Nun sind wir zum Schluss gespannt: Nutzt du schon PHP 8.2? Macht dir eine der neuen Funktionen ganz besonders Freude? Und was wünschst du dir für die kommenden Releases? Wir freuen uns über deinen Kommentar.

Titelbild: Ben Griffiths/Unsplash

Beteilige dich an der Diskussion

Kommentare